我试图用cx_freeze或pyInstaller冻结一个TraitsUI程序,该程序利用Chaco、TraitsUI、TraitsUI和较小程度的mayavi(实际上可以被删除)。我需要这个在mac,linux,ubuntu上运行,所以我要避免py2exe。我特意卸载了pyqt和pyside,以便只有wx后端可用。
在使用cx_freeze时,我遇到并报告了一个bug,因此pyInstaller似乎帮了我最大的忙。它生成了一个.exe文件,但当我运行该文件时,我收到警告和一个错误。要生成.exe文件,请执行以下操作:
pyinstaller --onefile --name=pameapp pamemain.py
pyinstaller pameapp.exe
运行时,警告为:
^{pr2}$另外,我得到以下错误:
Traceback (most recent call last):
File "<string>", line 8, in <module>
File "/home/glue/anaconda/envs/fibersim/lib/python2.7/site-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/traitsui.api", line 35, in <module>
File "/home/glue/anaconda/envs/fibersim/lib/python2.7/site-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/traitsui.editors", line 22, in <module>
File "/home/glue/anaconda/envs/fibersim/lib/python2.7/site-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/traitsui.editors.api", line 10, in <module>
File "/home/glue/anaconda/envs/fibersim/lib/python2.7/site-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/traitsui.editors.code_editor", line 36, in <module>
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/traitsui.editors.code_editor", line 48, in ToolkitEditorFactory
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/traits.traits", line 487, in __call__
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/traits.traits", line 1191, in Color
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/traitsui.toolkit_traits", line 7, in ColorTrait
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/traitsui.toolkit", line 137, in toolkit
traits.trait_errors.TraitError: Could not find any UI toolkit called 'null'
pyface可能有很多动态导入,所以这肯定是任何试图冻结ETS的人都会遇到的问题。有没有一个单一的解决办法来让这个工作?在
考虑到网上流传的关于成功率的老东西冻结了一个ETS项目,是否值得进一步投资?对我们来说,让人们避免为这个应用程序配置python将是一个巨大的好处。在
谢谢。在
在Pyface.toolkit软件包您正在使用的是使用动态导入:
所以pyinstaller无法检测到这一点。检查
python -v b.py 2>&1 | grep imp
什么是特定的导入,并使用适当的hiddenimports
列表添加钩子文件(hook-.py)。在{3}但是我不能在cdam>中进行测试。奇怪的是,我做了一些调试,发现添加了hiddenimport,但仍然不可用。在
相关问题 更多 >
编程相关推荐