ошибка при запуске exe-файла с пакетом xgboost с помощью pyinstaller - PullRequest
1 голос
/ 07 июня 2019

У меня есть код для прогнозирования некоторого значения, который использует пакет xgboost в коде.Когда я запускаю его в PyCharm, он работает как положено.

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

  `Traceback (most recent call last):
   File "test_fraud.py", line 3, in <module>
   import xgboost
   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
   File "<frozen importlib._bootstrap>", line 967, in 
   _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
   File 
  "C:\Users\ShubhamSingh\PycharmProjects\cfna_scoring\venv\lib\site- 
   packages\PyInstaller\loader\pyimod03_importers.py", line 627, in 
  exec_module
  exec(bytecode, module.__dict__)
  File "lib\site-packages\xgboost\__init__.py", line 11, in <module>
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in 
  _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "C:\Users\ShubhamSingh\PycharmProjects\cfna_scoring\venv\lib\site- 
  packages\PyInstaller\loader\pyimod03_importers.py", line 627, in 
  exec_module
  exec(bytecode, module.__dict__)
  File "lib\site-packages\xgboost\core.py", line 161, in <module>
  File "lib\site-packages\xgboost\core.py", line 123, in _load_lib
  File "lib\site-packages\xgboost\libpath.py", line 48, in find_lib_path
  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\SHUBHA~1\AppData\Local\Temp\_MEI11402\xgboost\xgboost.dll
  C:\Users\SHUBHA~1\AppData\Local\Temp\_MEI11402\xgboost
  \../../lib/xgboost.dll
 C:\Users\SHUBHA~1\AppData\Local\Temp\_MEI11402\xgboost\./lib/xgboost.dll
  C:\Users\SHUBHA~1\AppData\Local\Temp\_MEI11402\xgboost\xgboost.dll
 C:\Users\SHUBHA~1\AppData\Local\Temp\_MEI11402\xgboost
 \../../windows/x64/Release/xgboost.dll
   C:\Users\SHUBHA~1\AppData\Local\Temp\_MEI11402\
  xgboost\./windows/x64/Release/xgboost.dll
 [6564] Failed to execute script test_fraud `

Я не могу понять, что здесь не так.Любая идея или предложение будут действительно оценены.

1 Ответ

1 голос
/ 10 июня 2019

Похоже, что Pyinstaller не может найти файлы xgboost.dll, VERSION. Поэтому вам нужно добавить их вручную в ваш выходной пакет. Я также предлагаю вам использовать блок try/except, чтобы увидеть, что происходит. Предположим, этот простой пример:

import traceback
try:
    import xgboost
    input("xgboost imported successfully!")
except Exception:
    traceback.print_exc()
    input("Import Error!")

Я предлагаю вам использовать env для создания вашего скрипта, поэтому вам нужно добавить каталог xgboost, расположенный в <path_to_venv>/xgboost и файл VERSION, расположенный в <path_to_venv>/Lib/site-packages/xboost. Затем добавьте их как файл данных с помощью pyinstaller. Запустите env и выполните приведенную ниже команду (My virtualenv, названный env):

├───myscript.py
├───env

Команда:

(env) > pyinstaller myscript.py -F --add-data "./env/xgboost/*;xgboost/" --add-data "./env/Lib/site-packages/xgboost/VERSION;xgboost/"
...