Ошибка ModuleNotFound при выполнении пакета, созданного PyInstaller в Windows - PullRequest
1 голос
/ 11 мая 2019

Я упаковываю свое решение ML, которое включает керасы и тензор потока, используя PyInstaller.Exe строится просто отлично, но когда я выполняю exe, он дает ModuleNotFoundError for boto.Решение работает отлично, если я запускаю его с помощью скрипта.Все зависимости были установлены.

Вот мой файл спецификаций:

block_cipher = None


a = Analysis(['main.py'],
             pathex=['.'],
             binaries=[],
             datas=[('data\\*.tsv', 'data')],
             hiddenimports=['sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='main',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='main')

Вот ошибка:

Файл "site-packages \ gensim \ utils".py ", строка 44, в файле" c: \ programdata \ anaconda3 \ envs \ catalogai \ lib \ site-packages \ PyInstaller \ loader \ pyimod03_importers.py ", строка 627, в exec_module exec (байт-код, модуль. dict ) Файл "site-packages \ smart_open__init __. py", строка 28, в файле "c: \ programdata \ anaconda3 \ envs \ catalogai \ lib \ site-packages \ PyInstaller \ loader \ pyimod03_importers.py", строка 627, в exec_module exec (байт-код, модуль. dict ) Файл "site-packages \ smart_open \ smart_open_lib.py", строка 39, в ModuleNotFoundError: нет модуля с именем 'boto' [9628] Не удалось выполнить основной сценарий

Ответы [ 2 ]

1 голос
/ 11 мая 2019

В соответствии с это иногда PyInstaller не может найти импортированные модули и включить их в вывод исполняемого файла.Решение простое:

Чтобы найти эти скрытые импорты, создайте приложение с флагом -v (Получение подробного импорта Python выше) и запустите его.

Как только вы знаете, чтонеобходимы модули, вы добавляете необходимые модули в комплект, используя опцию команды --hidden-import=, или путем редактирования файла спецификации, или с помощью файла ловушек (см. раздел Понимание хуков PyInstaller ниже).

Простодобавьте отсутствующие модули в hiddenimports.

block_cipher = None


a = Analysis(['main.py'],
             pathex=['.'],
             binaries=[],
             datas=[('data\\*.tsv', 'data')],
             hiddenimports=['sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils','boto`],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='main',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='main')
0 голосов
/ 11 мая 2019

Вы пытались вручную установить модуль boto pip install boto3 Документация по boto сначала был установлен pip

...