PyInstaller с модулем pyne выдает «ImportError: модуль с именем __init__», даже если модуль найден - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь скомпилировать приложение 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 программ в автономные приложения в целом), и у меня закончились идеи. Как я могу исправить эту ошибку или обойти ее?

...