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