【问题标题】:Problem Running Xgboost in Executable File在可执行文件中运行 Xgboost 时出现问题
【发布时间】:2019-06-07 02:59:57
【问题描述】:

我正在使用PyInstaller 创建的可执行文件中保存的Xgboost 模型。我设置了一个虚拟环境并下载了Xgboost 并确保它运行但在我创建 exe 并运行 exe 后我收到一个关于xgboost.core 的错误:

ModuleNotFoundError: No module nemed 'xgboost.core'

【问题讨论】:

    标签: pyinstaller xgboost


    【解决方案1】:

    实际上我看不到 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/"
    

    【讨论】:

    • 太棒了!使用 --add-data 就像一个魅力!为什么需要这个?
    • Pyinstaller 只处理模块 python 目录,不处理 DLL 等额外依赖项,因此您需要手动提供它们。
    【解决方案2】:

    @Masoud Rahimi 的回答对我不起作用。使用--collect-all 选项运行pyinstaller:

    pyinstaller -D <app_name>.py --noconfirm --collect-all "xgboost"
    

    参见this issuepyinstaller manual 中的参数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-26
      • 2011-02-03
      • 1970-01-01
      • 2021-02-21
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多