py2exe python应用程序在pyside中使用Chaco时出错
py2exe python应用程序在pyside中使用Chaco时出错,python,pyside,py2exe,enthought,chaco,Python,Pyside,Py2exe,Enthought,Chaco,在这里输入代码我有一个程序,它使用嵌入pyside(Qt4)GUI中的Enthough的Chaco绘图。它也使用numpy,但无论如何。该程序直接从Python在多个平台上运行良好,但当我使用py2exe为win32创建.exe时,在运行.exe时出现错误: Traceback (most recent call last): File "awesome_program.pyw", line 19, in <module> File "plotwidget.pyc", lin
在这里输入代码
我有一个程序,它使用嵌入pyside(Qt4)GUI中的Enthough的Chaco绘图。它也使用numpy,但无论如何。该程序直接从Python在多个平台上运行良好,但当我使用py2exe为win32创建.exe时,在运行.exe时出现错误:
Traceback (most recent call last):
File "awesome_program.pyw", line 19, in <module>
File "plotwidget.pyc", line 13, in <module>
File "enable\api.pyc", line 8, in <module>
File "enable\base.pyc", line 35, in <module>
File "enable\colors.pyc", line 246, in <module>
File "traitsui\qt4\color_editor.pyc", line 21, in <module>
File "traitsui\editors\__init__.pyc", line 22, in <module>
File "traitsui\editors\api.pyc", line 29, in <module>
File "traitsui\editors\list_str_editor.pyc", line 33, in <module>
File "pyface\image_resource.pyc", line 18, in <module>
File "pyface\toolkit.pyc", line 73, in <module>
File "pyface\toolkit.pyc", line 38, in _init_toolkit
File "pyface\toolkit.pyc", line 31, in import_toolkit
ImportError: No module named init
我对Chaco和py2exe相当陌生,但我感觉需要在我的py2exe安装文件中显式地从Enthound的套件中包括一些东西?有人对此有经验吗?我没有使用过py2exe,但我有一些使用py2app的经验(我认为类似)。它无法包含许多enthught/chaco包,因此您需要在setup.py中手动包含它们。以下是我所做的:
OPTIONS = dict(
includes = [
# The backends are dynamically imported and thus we need to
# tell py2app about them.
'kiva.*',
'enable.*',
'enable.qt4.*',
'pyface.*',
'pyface.ui.qt4.*',
'pyface.ui.qt4.action.*',
'pyface.ui.qt4.timer.*',
'pyface.ui.qt4.wizard.*',
'pyface.ui.qt4.workbench.*',
'traitsui.qt4.*',
'traitsui.qt4.extra.*',
'PyQt4.pyqtconfig',
'glob.*'],
argv_emulation = True)
setup(
app=APP,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
如果您使用类似的选项进行替换(当然,将
py2app
替换为py2exe
,可能将PyQt4
替换为PySide
),它可能对您有效。如果另一次导入失败,只需将其添加到包含列表中。现在,关于Qt4图像的新错误来自Enthink:Traceback(最近一次调用):文件“awesome_program.pyw”,第19行,在文件“plotwidget.pyc”中,第13行,在文件“enable\api.pyc”中,第21行,在文件“enable\markers.pyc”中,在文件的第18行“enable\compiled_path.pyc”,第17行,文件“enable\toolkit.pyc”,第47行,文件“enable\toolkit.pyc”,第40行,在_init_toolkit ImportError中:无法导入qt4工具包的映像后端(原因:['I ImportError:没有名为qt4.image\n'的模块])。您需要跟踪根导入并将其包含在上面的列表中。py2exe缺少动态加载的模块,必须手动添加。知道这将如何转换为cx_freeze吗?@AdamHughes抱歉,从未使用过cx_freeze。py2app IIUC只生成Mac OSX二进制文件。我确实在尝试独立于平台。cx_freeze
到目前为止,伙计们已经让我走了相当长的一段路,所以我认为这是可能的。同时我将尝试py2app,谢谢。
OPTIONS = dict(
includes = [
# The backends are dynamically imported and thus we need to
# tell py2app about them.
'kiva.*',
'enable.*',
'enable.qt4.*',
'pyface.*',
'pyface.ui.qt4.*',
'pyface.ui.qt4.action.*',
'pyface.ui.qt4.timer.*',
'pyface.ui.qt4.wizard.*',
'pyface.ui.qt4.workbench.*',
'traitsui.qt4.*',
'traitsui.qt4.extra.*',
'PyQt4.pyqtconfig',
'glob.*'],
argv_emulation = True)
setup(
app=APP,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)