【问题标题】:Error in running exe file having xgboost package by using pyinstaller使用 pyinstaller 运行具有 xgboost 包的 exe 文件时出错
【发布时间】:2020-12-30 03:21:54
【问题描述】:

我有一个代码用于预测在代码中使用 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

这里有什么问题?

【问题讨论】:

    标签: python pyinstaller xgboost


    【解决方案1】:

    Pyinstaller 似乎找不到xgboost.dllVERSION 文件。所以你需要手动将它们添加到你的输出包中。我还建议您使用try/except 块来查看发生了什么。 假设这个简单的例子:

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

    我建议您使用env 来构建您的脚本,因此您需要添加位于&lt;path_to_venv&gt;/xgboostxgboost 目录和位于&lt;path_to_venv&gt;/Lib/site-packages/xboostVERSION 文件。接下来,使用 pyinstaller 将它们添加为数据文件。启动您的环境并执行以下命令(我的虚拟环境命名为env):

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

    命令:

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

    【讨论】:

    猜你喜欢
    • 2019-11-18
    • 2021-04-22
    • 2019-11-17
    • 2018-10-07
    • 2019-12-25
    • 2019-05-07
    • 2020-02-27
    • 1970-01-01
    • 2020-12-25
    相关资源
    最近更新 更多