Ошибка: 'xgboost.libpath.XGBoostLibraryNotFound' при запуске pyinstaller .exe - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь использовать pyinstaller для упаковки написанной мной программы, использующей xgboost. Файл .exe успешно собран, но когда я его запускаю, я получаю следующую ошибку:

xgboost.libpath.XGBoostLibraryNotFound: Cannot find XGBoost Library in the candidate path, did you install compilers and run build.sh in root path?
List of candidates:
C:\Users\MHAMIL~1\AppData\Local\Temp\_MEI115602\xgboost\xgboost.dll
C:\Users\MHAMIL~1\AppData\Local\Temp\_MEI115602\xgboost\../../lib/xgboost.dll
C:\Users\MHAMIL~1\AppData\Local\Temp\_MEI115602\xgboost\./lib/xgboost.dll
C:\Users\MHAMIL~1\AppData\Local\Temp\_MEI115602\xgboost\xgboost.dll
C:\Users\MHAMIL~1\AppData\Local\Temp\_MEI115602\xgboost\../../windows/x64/Release/xgboost.dll
C:\Users\MHAMIL~1\AppData\Local\Temp\_MEI115602\xgboost\./windows/x64/Release/xgboost.dll
[26104] Failed to execute script __main__

Из выполненного мной поиска кажется, что это связано с тем, что двоичные файлы недоступны для exe для использования. Я добавил их в свой файл .spe c как для sklearn, так и для xgboost, так как изначально у меня была аналогичная проблема со sklearn. Добавление двоичных файлов в файл .spe c решило проблему для sklearn, но не для xgboost. Ниже показано, как я добавил их в файл .spe c:

datas, binaries, hiddenimports = collect_all("xgboost")

a = Analysis(['__main__.py'],
             pathex=['C:\\Users\\mhamilton\\Documents\\Projects\\forecast\\production'],
             binaries=[('C:\\Users\\mhamilton\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\site-packages\\sklearn\\.libs\\vcomp140.dll','.'),
                        ('C:\\Users\\mhamilton\\AppData\\Local\\Programs\\Python\\Python38\\xgboost\\xgboost.dll','.')],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

Если кто-нибудь решил эту или аналогичную проблему, я был бы признателен за ваш опыт!

...