Python 3.3 cx_freeze奇怪的错误:'NoneType'对象没有属性'path'

时间:2013-03-05 01:03:30

标签: python pygame cx-freeze python-3.3

所以,这是我的问题。

我正在使用Ubuntu 12.10在Pygame和Python 3.3中制作游戏。精细。我要将一堆Python脚本捆绑成一个可执行文件,然后分发它。还好。我要使用cx_freeze,因为我使用的是Python 3,我没有其他选择。

这就是我的问题所在。我用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。现在,最后一行脱颖而出因为谷歌搜索没有透露任何东西。我不知道subModule可能会变成None,而且我无法轻易检查,因为cx_freeze有文档。

我之前从未真正使用过cx_freeze或distutils,所以我不知道我到底在做什么!任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

深入研究这个问题,这是cx_Freeze中的一个错误,只有在安装了PEP 3149后才有多个Python版本才会出现错误 - 即它在3.3之前不会出现。

我已经为它提交了错误报告:https://bitbucket.org/anthony_tuininga/cx_freeze/issue/22/error-when-scanning-for-modules-with-a

与此同时,您现在可以通过使用Python 3.2来避免此问题,因为这是Ubuntu 12.10中的默认设置。 Python 3.3将是13.04中的默认值。