Не удается использовать lightgbm.dll в exe Pyinstaller - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь преобразовать свой код в исполняемый файл, используя спецификацию pyinstaller.Я запустил pyinstaller с помощью следующей команды:

pyinstaller --clean --add-data lib_lightgbm.dll;\compile orca.spec

Exe не работает с ошибкой:

main__.PyInstallerImportError: Failed to load dynlib/dll 
'C:\\Users\\...\\lightgbm\\../compile\\lib_lightgbm.dll'. Most probably this 
dynlib/dll was not found when the application was frozen.

Я попытался добавить lightgbm.dll через двоичные файлы, но не сработал.Я также попытался вручную скопировать его в место назначения после создания exe.Это тоже не сработало.Большинство вопросов о pyinstaller и lib_lightgbm.dll не смогли ответить на мою проблему.Может кто-нибудь предложить решение?Я нахожусь в своем уме в данный момент.

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

# -*- mode: python -*-
import sys
sys.setrecursionlimit(5000)

block_cipher = None


a = Analysis(['mycode.py'],
             pathex=['C:\\mycode\\source code'],
             binaries=[],
             datas=[],
             hiddenimports=['cython', 'sklearn', 'sklearn.feature_extraction','sklearn.pipeline', 'sklearn.ensemble', '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,
          [],
          exclude_binaries=True,
          name='mycode',
          debug=True,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='mycode')

1 Ответ

0 голосов
/ 17 апреля 2019

При сборке из файла спецификации эти параметры не могут быть изменены.

, поэтому либо добавьте кортеж в раздел datas, либо пропустите файл спецификации и используйте всепараметры для pyinstaller

Я не уверен на 100%, что это исправление, но должно быть что-то в вашем datas разделе вашего спецификации.Так что я бы расследовал это.вы также можете создать файл спецификации, используя pyinstaller <spec file here>, когда закончите редактирование.

https://pyinstaller.readthedocs.io/en/stable/spec-files.html

...