我使用以下命令为我的大型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

在我使用JOBLIB加载我的决策树模型文件(dtree.joblib)之前,exe文件运行良好.

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

弹出以下错误-Here is the complete error in the terminal:

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

我try 更新HIDDEN_IMPORTS,只将sklearn.ensemblesklearn.ensemble._weight_boostin添加到exe的规范文件中,按照this答案中的步骤操作.下面还给出了步骤

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

但在运行可执行文件后仍出现与之前相同的ModuleNotFoundError.

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

有没有人能建议一些步骤,让脚本的可执行文件可运行?

推荐答案

我遇到了一些类似的问题,通过收集整个滑冰模块,而不仅仅是丢失的那个模块,它得到了解决.我不明白为什么,但这解决了我的问题.也许它也会对你有帮助

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

Python相关问答推荐

在Python中,如何才能/应该使用decorator 来实现函数多态性?

来自ARIMA结果的模型方程

socket.gaierror:[Errno -2]名称或服务未知|Firebase x Raspberry Pi

仅对matplotlib的条标签中的一个条标签应用不同的格式

如何在Python中按组应用简单的线性回归?

当值是一个integer时,在Python中使用JMESPath来验证字典中的值(例如:1)

将numpy数组存储在原始二进制文件中

如何将双框框列中的成对变成两个新列

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

利用Selenium和Beautiful Soup实现Web抓取JavaScript表

使用NeuralProphet绘制置信区间时出错

未知依赖项pin—1阻止conda安装""

ConversationalRetrivalChain引发键错误

搜索按钮不工作,Python tkinter

交替字符串位置的正则表达式

关于两个表达式的区别

如何在Python 3.9.6和MacOS Sonoma 14.3.1下安装Pyregion