【发布时间】:2019-06-07 02:59:57
【问题描述】:
我正在使用PyInstaller 创建的可执行文件中保存的Xgboost 模型。我设置了一个虚拟环境并下载了Xgboost 并确保它运行但在我创建 exe 并运行 exe 后我收到一个关于xgboost.core 的错误:
ModuleNotFoundError: No module nemed 'xgboost.core'
【问题讨论】:
标签: pyinstaller xgboost
我正在使用PyInstaller 创建的可执行文件中保存的Xgboost 模型。我设置了一个虚拟环境并下载了Xgboost 并确保它运行但在我创建 exe 并运行 exe 后我收到一个关于xgboost.core 的错误:
ModuleNotFoundError: No module nemed 'xgboost.core'
【问题讨论】:
标签: pyinstaller xgboost
实际上我看不到 xgboost 的任何导入问题,首先,请确保您在 env 中使用最新版本,pip install -U xgboost 接下来尝试将 xgboost.core 添加为 hidden-import 并将 xgboost 的 DLL 添加为data-files.
假设你的 virtualenv 被命名为env,使用下面的命令来生成你的可执行文件:
├───myscript.py
├───env
代码:
import traceback
try:
from xgboost import core
input("xgboost.core imported successfully!")
except Exception:
traceback.print_exc()
input("Import Error!")
命令:
(env) > pyinstaller myscript.py -F --hidden-import=xgboost.core --add-data "./env/xgboost/*;xgboost/"
--add-data "./env/Lib/site-packages/xgboost/VERSION;xgboost/"
【讨论】:
@Masoud Rahimi 的回答对我不起作用。使用--collect-all 选项运行pyinstaller:
pyinstaller -D <app_name>.py --noconfirm --collect-all "xgboost"
参见this issue 和pyinstaller manual 中的参数
【讨论】: