1、报错场景
我在windows上训练了一个机器学习模型,用joblib保存后上传到服务器上。在服务器上运行python脚本报错:ImportError: No module named joblib ,所以我使用pip3 install joblib安装joblib这个包,安装完之后通过pip3 list可以看出我已经安装了这个包:

但是,通过./run.py执行python脚本仍然报错:ImportError: No module named joblib
2、解决办法
后来才发现,我的run.py的第一行命令是#!/usr/bin/env python,我d的linux服务器上有两个python版本,直接使用python是默认使用的python2。因为pip3 install xxx命令安装的包对应的是python3,所以将run.py的第一行命令改为#!/usr/bin/env python3即可
补充:
如果在linux上使用windows训练好且保存的模型报错(可能是scikit-learn等库的版本不一样),那么建议在linux上重新训练一遍并且保存训练好的模型,这样就可以多次供后端调用了。
在Windows上训练的机器学习模型在Linux服务器上运行时遇到ImportError,问题出在Python版本不一致。通过pip3安装的joblib对应Python3,而服务器默认使用Python2。修改run.py的第一行命令为#!/usr/bin/envpython3以指定Python3环境,可以解决此问题。若模型因库版本差异报错,建议在Linux上重新训练并保存模型。
3万+

被折叠的 条评论
为什么被折叠?



