Я пытаюсь скомпилировать приложение Python 2.7 (это старый код) из среды conda
, используя PyInstaller
. Приложение построено на модуле pyne
, который должен быть установлен с использованием conda-forge
вместо pip
(в случае, если это имеет значение). Приложение работает нормально из моей IDE. Когда я компилирую приложение с помощью
pyinstaller APP.py --hidden-import=_sysconfigdata
и запускаю приложение из папки dist/APP
, я получаю следующую ошибку:
WORKING-DIRECTORY-PATH/dist/APP/pyne/__init__.py:18: Warning: Error importing PyNE: you should not try to import PyNE from its source directory; please exit the PyNE source tree, and relaunch your python interpreter from there.
Traceback (most recent call last):
File "ir.py", line 18, in <module>
File "/private/var/folders/4h/fhsj8hmx3mgbd2c5nygf75zh0000gn/T/pip-unpacked-wheel-cjBGDc/PyInstaller/loader/pyimod03_importers.py", line 391, in load_module
File "/anaconda3/envs/ENV-NAME/lib/python2.7/site-packages/pyne/__init__.py", line 13, in <module>
from .pyne_config import *
File "/private/var/folders/4h/fhsj8hmx3mgbd2c5nygf75zh0000gn/T/pip-unpacked-wheel-cjBGDc/PyInstaller/loader/pyimod03_importers.py", line 680, in load_module
File "pyne_config.pyx", line 18, in init pyne.pyne_config
ImportError: No module named __init__
[11854] Failed to execute script APP
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
[Process completed]
Если затем добавить pyne.__init__
как скрытый импорт с
pyinstaller APP.py --hidden-import=_sysconfigdata --hidden-import=pyne.__init__
Я получаю немного другую ошибку:
WORKING-DIRECTORY-PATH/dist/APP/pyne/__init__/__init__.py:18: Warning: Error importing PyNE: you should not try to import PyNE from its source directory; please exit the PyNE source tree, and relaunch your python interpreter from there.
WORKING-DIRECTORY-PATH/dist/APP/pyne/__init__.py:18: Warning: Error importing PyNE: you should not try to import PyNE from its source directory; please exit the PyNE source tree, and relaunch your python interpreter from there.
Traceback (most recent call last):
File "ir.py", line 18, in <module>
File "/private/var/folders/4h/fhsj8hmx3mgbd2c5nygf75zh0000gn/T/pip-unpacked-wheel-cjBGDc/PyInstaller/loader/pyimod03_importers.py", line 391, in load_module
File "/anaconda3/envs/ENV-NAME/lib/python2.7/site-packages/pyne/__init__.py", line 13, in <module>
from .pyne_config import *
File "/private/var/folders/4h/fhsj8hmx3mgbd2c5nygf75zh0000gn/T/pip-unpacked-wheel-cjBGDc/PyInstaller/loader/pyimod03_importers.py", line 680, in load_module
File "pyne_config.pyx", line 18, in init pyne.pyne_config
File "/private/var/folders/4h/fhsj8hmx3mgbd2c5nygf75zh0000gn/T/pip-unpacked-wheel-cjBGDc/PyInstaller/loader/pyimod03_importers.py", line 391, in load_module
File "/anaconda3/envs/ENV-NAME/lib/python2.7/site-packages/pyne/__init__.py", line 13, in <module>
from .pyne_config import *
ImportError: No module named pyne_config
[12075] Failed to execute script APP
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
[Process completed]
Я ничего не думал делать (включая pyne.pyne_config
как скрытый импорт, включая pyne.pyne_config.__init__
как скрытый импорт и т. д. c), кажется, избавляется от этой ошибки. Когда я смотрю в папку dist/APP
, pyne
и его различные подпакеты кажутся представленными как .so
файлы. Кроме того, PyInstaller
, похоже, не может идентифицировать pyne
как необходимый пакет, глядя на файл xref-ir.html
.
Я новичок в использовании PyInstaller
(или компиляции Python программ в автономные приложения в целом), и у меня закончились идеи. Как я могу исправить эту ошибку или обойти ее?