Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
py2exe python应用程序在pyside中使用Chaco时出错_Python_Pyside_Py2exe_Enthought_Chaco - Fatal编程技术网

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'],
      )