首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在py2exe python应用程序中使用pyside中的Chaco时出错

在py2exe python应用程序中使用pyside中的Chaco时出错
EN

Stack Overflow用户
提问于 2013-03-22 10:28:35
回答 1查看 913关注 0票数 1

我有一个程序,它使用嵌入在pyside (Qt4)图形用户界面中的enter code here的Chaco图。它也使用numpy,但不要紧。该程序直接从Python在多个平台上运行良好,但当我使用py2exe为win32创建一个.exe时,我在运行该.exe时得到一个错误:

代码语言:javascript
复制
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

setup.py文件为:

代码语言:javascript
复制
#! /usr/bin/env python
# setup_win32.py

# Create an .exe for win32 systems.
# Run this with:
#   python setup_win32.py py2exe

import sys
from distutils.core import setup
import py2exe
# from cx_Freeze import setup, Executable

includes = []
includes.append("PySide.QtUiTools")
includes.append("PySide.QtXml")

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(options = {"py2exe": {"dll_excludes":["MSVCP90.dll"],
                            "includes": includes}},
      name='awesomeprogram',
      version='0.01',
      description='A program to visualize stuff.',
      author='John Doe',
      author_email='dude@email.com',
      console=[{"script": "awesome_program.pyw"}])

我是Chaco和py2exe的新手,但我感觉需要在我的py2exe设置文件中显式地包含Enthought的套件中的某些内容?有没有人有这方面的经验?

EN

回答 1

Stack Overflow用户

发布于 2013-03-22 18:39:09

我没有使用过py2exe,但我有一些使用py2app的经验(我认为它是类似的)。它没有包含很多include /chaco包,所以您需要在setup.py中手动包含它们。下面是我所做的:

代码语言:javascript
复制
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'],
      )

如果您使用类似的选项替换use (当然,将py2app替换为py2exe,也可能将PyQt4替换为PySide),它可能对您有效。如果另一个导入失败,只需将其添加到包含列表中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15561722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档