Python sklearn.externals joblib抛出ImportError-服务器上没有名为joblib.numpy_pickle的模块

Python sklearn.externals joblib抛出ImportError-服务器上没有名为joblib.numpy_pickle的模块,python,scikit-learn,sap-cloud-platform,Python,Scikit Learn,Sap Cloud Platform,我正在努力解决一个就业问题 我需要将推理应用程序推送到远程服务器,还需要加载一个保存的标准定标器,因为如果我尝试适应,就会出现内存不足异常。我无法对服务器进行物理更改,因为它是一个sap cloud foundry实例,我看不到解决方法 从服务器回溯: 2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR File "app.py", line 40, in <module> 2019-08-05T15:34:41.54+0

我正在努力解决一个就业问题

我需要将推理应用程序推送到远程服务器,还需要加载一个保存的标准定标器,因为如果我尝试适应,就会出现内存不足异常。我无法对服务器进行物理更改,因为它是一个sap cloud foundry实例,我看不到解决方法

从服务器回溯:

   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR   File "app.py", line 40, in <module>
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR     standard_scaler = joblib.load('./datascaler.save')
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR   File "/home/vcap/deps/0/python/lib/python2.7/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 598, in load
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR     obj = _unpickle(fobj, filename, mmap_mode)
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR   File "/home/vcap/deps/0/python/lib/python2.7/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 526, in _unpickle
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR     obj = unpickler.load()
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR   File "/home/vcap/deps/0/python/lib/python2.7/pickle.py", line 864, in load
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR     dispatch[key](self)
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR   File "/home/vcap/deps/0/python/lib/python2.7/pickle.py", line 1096, in load_global
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR     klass = self.find_class(module, name)
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR   File "/home/vcap/deps/0/python/lib/python2.7/pickle.py", line 1130, in find_class
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR     __import__(module)
   2019-08-05T15:34:41.54+0200 [APP/PROC/WEB/0] ERR ImportError: No module named joblib.numpy_pickle
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]错误文件“APP.py”,第40行,在
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]ERR standard_scaler=joblib.load(“./datascaler.save”)
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]错误文件“/home/vcap/deps/0/python/lib/python2.7/site packages/sklearn/externals/joblib/numpy_pickle.py”,第598行,已加载
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]ERR obj=_unpickle(fobj,文件名,mmap模式)
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]ERR File”/home/vcap/deps/0/python/lib/python2.7/site packages/sklearn/externals/joblib/numpy_pickle.py“,第526行,在“unpickle”中
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]ERR obj=unpickler.load()
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]错误文件“/home/vcap/deps/0/python/lib/python2.7/pickle.py”,第864行,已加载
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]错误发送[key](self)
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]错误文件“/home/vcap/deps/0/python/lib/python2.7/pickle.py”,第1096行,在load\u global中
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]ERR klass=self.find_类(模块,名称)
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]错误文件“/home/vcap/deps/0/python/lib/python2.7/pickle.py”,第1130行,在find_类中
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]错误导入(模块)
2019-08-05T15:34:41.54+0200[APP/PROC/WEB/0]错误导入错误:没有名为joblib.numpy_pickle的模块
从我在类似帖子上看到的情况来看,joblib版本冲突/不匹配可能是一个原因,但我对此无能为力,因为发生此错误的不是我的本地机器


是否有其他方法保存定标器或解决此冲突?

我也遇到此问题。可能有两个原因

  • 使用
    joblib
    加载时,使用
    sklearn.externals.joblib
    保存的模式。(sklearn.externals.joblib和joblib是不同的lib)

  • 这两个
    sklearn.externals.joblib
    都用于保存和加载阶段。但是,它们是不同的版本。例如,在保存阶段
    scikit learn==0.19.1
    ,而在加载阶段
    scikit learn==0.21.x

  • 修复它的最佳方法是使用相同版本的joblib。sklearn.externals.joblib将在将来的版本中删除。

    试试这个