Невозможно использовать lightgbm.dll в exe-файле Pyinstaller

#python #python-3.x #exe #pyinstaller #lightgbm

#python #python-3.x #exe #pyinstaller #lightgbm

Вопрос:

Я пытаюсь преобразовать свой код в exe-файл, используя спецификацию 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:

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

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

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

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