0

だから、ここに私の問題があります。

Ubuntu 12.10 を使用して、Pygame と Python 3.3 でゲームを作成しています。罰金。一連の Python スクリプトを 1 つの実行可能ファイルにバンドルして配布します。また、結構です。Python 3 を使用しているため、他に選択肢がないため、cx_freeze を使用します。

これが私の問題の出番です。Googleで検索しましたが、そのようなものは見たことがありません。私のsetup.pyは次のとおりです。

from cx_Freeze import setup, Executable
import sys

includes = ['sys', 'pygame.display', 'pygame.event', 'pygame.mixer', 'core', 'game']

build_options = {
                 'optimize' : 2,
                 'compressed': True,
                 'packages': ['pygame', 'core', 'game'],
                 'includes': includes,
                 'path': sys.path + ['core', 'game'],
                 }

executable = Executable('__init__.py',
                        copyDependentFiles=True,
                        targetDir='dist',
                        )

setup(name='Invasodado',
      version='0.8',
      description='wowza!',
      options = {'build_exe': build_options},
      executables=[executable])

私の__init__.pyは次のとおりです。

from sys import argv

import pygame.display
import pygame.event
import pygame.mixer

pygame.mixer.init()
pygame.display.init()
pygame.font.init()

from core import gsm

#Omitted for brevity

私のコードの残りの部分 (完全な を含む__init__.py) は、関連がある場合はhttps://github.com/CorundumGames/Invasodadoにあります。

http://pastebin.com/Aej05wGEで見つけることができる長いお尻のスタック トレースを取得します。最後の 10 行は次のとおりです。

  File "/usr/local/lib/python3.3/dist-packages/cx_Freeze/finder.py", line 421, in _RunHook
    method(self, *args)
  File "/usr/local/lib/python3.3/dist-packages/cx_Freeze/hooks.py", line 454, in load_scipy
    finder.IncludePackage("scipy.lib")
  File "/usr/local/lib/python3.3/dist-packages/cx_Freeze/finder.py", line 536, in IncludePackage
    self._ImportAllSubModules(module, deferredImports)
  File "/usr/local/lib/python3.3/dist-packages/cx_Freeze/finder.py", line 211, in _ImportAllSubModules
    recursive)
  File "/usr/local/lib/python3.3/dist-packages/cx_Freeze/finder.py", line 209, in _ImportAllSubModules
    if subModule.path and recursive:
AttributeError: 'NoneType' object has no attribute 'path'

関連する場合に備えて、私は Pydev と Eclipse を使用しています。最後の行は、グーグルで検索しても何も明らかにならないため、際立っています。cx_freeze にはたわごとのドキュメントがあるため、簡単に確認できませんsubModuleNone

cx_freeze や distutils を実際に使用したことがないので、一体何をしているのかわかりません! どんな助けでも大歓迎です。

4

1 に答える 1

1

これを掘り下げたところ、これは cx_Freeze のバグであり、PEP 3149がインストールされて以来、複数の Python バージョンがある場合にのみヒットする可能性があります。つまり、3.3 より前には発生しませんでした。

バグレポートを提出しました:https://bitbucket.org/anthony_tuininga/cx_freeze/issue/22/error-when-scanning-for-modules-with-a

当面は、Ubuntu 12.10 のデフォルトである Python 3.2 を使用することで、おそらく問題を回避できます。13.04 では Python 3.3 がデフォルトになります。

于 2013-03-07T18:35:14.543 に答える