python - 使用 pyinstaller 运行包含 xgboost 包的 exe 文件时出错

标签 python pyinstaller xgboost

我有一个用于预测某些值的代码,该代码在代码中使用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

这里出了什么问题?

最佳答案

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>/xgboostVERSION文件位于<path_to_venv>/Lib/site-packages/xboost 。接下来,使用 pyinstaller 将它们添加为数据文件。启动您的环境并执行以下命令(我的虚拟环境名为 env ):

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

命令:

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

关于python - 使用 pyinstaller 运行包含 xgboost 包的 exe 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56493216/

相关文章:

r - 使用 Caret 和 xgboost 训练分类模型期间的警告消息

python - 导入错误: cannot import name 'is_scalar'

python - 如何告诉 Pyinstaller 使用 Python 3.5 而不是 2.7?

python - Pyinstaller: AttributeError: 模块 'enum' 没有属性 'IntFlag'

python - Pyinstaller "Failed to execute script pyiboot01_bootstrap"

python - Windows xgboost 错误

python-2.7 - xgboost模型的getfscore:'str'对象不可调用

python - 从 Skimage 高程图生成 3D 表面图(2D numpy.ndarray)

python - Numpy 数组修剪字符串值

python - choropleth Plotly map 中的自定义垃圾箱