Я пытаюсь заморозить с помощью cx_freeze или pyInstaller программу TraitsUI, которая использует Chaco, Traits, TraitsUI и в меньшей степени mayavi (фактически может быть выведена). Мне нужно это для запуска на mac, linux, ubuntu, поэтому избегайте py2exe. Я намеренно удалил pyqt и pyside, так что доступен только wx-сервер.Замораживание (.exe) a traitsUI программа, реально выполнимая?
Использование cx_freeze, я столкнулся с сообщением об ошибке, так что pyInstaller, кажется, получает меня самым дальним. Он сгенерировал файл .exe, но когда я запускаю файл, я получаю предупреждения и ошибку. Для создания EXE-файл, который я сделал:
pyinstaller --onefile --name=pameapp pamemain.py
pyinstaller pameapp.exe
После запуска, предупреждения являются:
Warning: Unable to import the wx backend for pyface due to traceback: Traceback (most recent call last):
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/pyface.toolkit", line 45, in _init_toolkit
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/pyface.toolkit", line 31, in import_toolkit
ImportError: No module named wx.init
Warning: Unable to import the qt4 backend for pyface due to traceback: Traceback (most recent call last):
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/pyface.toolkit", line 45, in _init_toolkit
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/pyface.toolkit", line 31, in import_toolkit
ImportError: No module named init
Warning: Unable to import the null backend for pyface due to traceback: Traceback (most recent call last):
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/pyface.toolkit", line 45, in _init_toolkit
File "/home/glue/Desktop/fibersim/pame/build/pameapp/out00-PYZ.pyz/pyface.toolkit", line 31, in import_toolkit
ImportError: No module named null.init
Кроме того, я получаю следующее сообщение об ошибке:
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 для этого приложения, это будет большим плюсом.
Спасибо.
Чтобы уменьшить этот вопрос, было бы полезно, если бы вы могли объяснить, почему я избегаю того, что проблема была в будущем. –
С помощью cx_Freeze я бы попробовал добавить 'wx' в список пакетов, включенных, чтобы узнать, не изменилось ли это. Но я не пробовал замораживать приложение пользовательского интерфейса черт; это может быть непрактично. –
Эй, Томас. Я действительно пытался cx_freeze, и я получаю ошибку в библиотеке коллекций, очень похожей на ошибку, о которой вы говорили ранее на битбакете. Это имеет какое-то значение для вас? https://bitbucket.org/anthony_tuininga/cx_freeze/issue/127/collectionssys-error#comment-15016355 Если это работает, то я думаю, что wx в пакетах будет в порядке. Подобно "collections.abc", я получаю ошибку "collections.sys" –