py2exe traits GUI

时间:2012-04-29 10:03:13

标签: python py2exe traits enthought

我正在尝试用py2exe打包我的程序。它使用traits GUI。
将image.py中的import语句从函数“convert_image”移出try块后,crated exe在以下第二点失败:

1:dist \ traitsui \ ui_traits.py:来自.image.image import ImageLibrary
2:dist \ traitsui \ image \ image.py:来自traitsui.ui_traits import HasBorder,HasMargin,Alignment

文件结构:

root
+-...
+-main.py
+-setup.py
+-dist
  +-...
  +-main.exe
  +-traitsui
    +-...
    +-ui_tratis.py
    +-image
      +-image.py

将以下内容添加到image.py

import sys
raise Exception(str(sys.path))

我得到:例外:['C:\ Users ... \ dist \。']] 所以似乎路径设置正确。


错误跟踪:

Traceback (most recent call last):
  File "main.py", line 8, in <module>
  File "gui\FileSelect.pyc", line 8, in <module>
  File "traitsui\api.pyc", line 27, in <module>
  File "traitsui\basic_editor_factory.pyc", line 30, in <module>
  File "traitsui\editor_factory.pyc", line 32, in <module>
  File "traitsui\helper.pyc", line 32, in <module>
  File "C:\Users\...\dist\.\traitsui\ui_traits.py", line 158, in <module>
    from .image.image import ImageLibrary
  File "C:\Users\...\dist\.\traitsui\image\image.py", line 34, in <module>
    from traitsui.ui_traits import HasBorder, HasMargin, Alignment
ImportError: cannot import name HasBorder

setup.py: https://gist.github.com/2570888

2 个答案:

答案 0 :(得分:0)

尝试将packages: ["traitsui"]添加到py2exe的选项词典(使用skip_archive选项)。

我认为py2exe没有检测到正在使用包traitsui.ui_traits。您需要强制它在分发中包含整个traitsui包。

注意:只是一个猜测,没有经过测试。

答案 1 :(得分:0)

嗯,接下来我用于图像的Enthought包有问题。

所以这里有新的安装文件: https://gist.github.com/2570888