Pyinstaller 创建的 exe 文件无法使用 joblib 加载决策树模型

问题描述 投票:0回答:2

我使用以下命令创建了大型 python 脚本的 exe 文件 -

pyinstaller gui_final.py --onefile --hidden-import=sklearn --hidden-import=ipaddress --hidden-import=PIL --hidden-import=pickle --hidden-import=shutil --hidden-import=joblib

exe 文件工作正常,直到我使用 JOBLIB 加载决策树模型文件 (dtree.joblib)。

clf = joblib.load("dtree.joblib")

弹出以下错误 - 这是终端中的完整错误

ModuleNotFoundError: No module named 'sklearn.ensemble._weight_boosting'

我尝试按照

this
答案中的步骤将
sklearn.ensemble
sklearn.ensemble._weight_boostin添加到exe的规范文件中来更新hidden_imports。下面也给出了步骤

from PyInstaller.utils.hooks import collect_submodules

hidden_imports = collect_submodules('sklearn.ensemble') #('sklearn.ensemble._weight_boosting')

a = Analysis(['gui_final.py'],
         binaries=None,
         datas=[],
         hiddenimports=hidden_imports,
         .
         .

通过运行命令:

pyinstaller gui_final.spec

但运行 exe 后仍然遇到与之前相同的 ModuleNotFoundError。

我尝试使用 pyinstaller 查看有关 joblib 的一些问题,但没有找到任何合适的问题或解决方案。

任何人都可以建议使脚本的 exe 可运行的步骤吗?

python machine-learning pyinstaller decision-tree joblib
2个回答
1
投票

我遇到了一些类似的问题,通过收集整个 sklearn 模块(而不仅仅是丢失的模块)解决了这个问题。我不明白为什么,但这解决了我的问题。或许对你也有帮助

from PyInstaller.utils.hooks import collect_submodules
hidden_imports = collect_submodules('sklearn')

0
投票

我有同样的问题,@flipSTAR 的解决方案对我有用。 如果不起作用尝试观察数据二元阵营

© www.soinside.com 2019 - 2024. All rights reserved.