【发布时间】:2019-03-22 21:38:34
【问题描述】:
我已经安装了一个 sklearn 管道,现在我需要部署它,我已经腌制了我的管道(也尝试了 joblib 和 dill)。当我在具有相同版本的 dill、pickle 和 python 的其他环境中 unpickle 时,出现此错误:
exception has occurred: ModuleNotFoundError
No module named '_regex'
File "\opt\miniconda\lib\python3.6\site-packages\dill\_dill.py", line 832, in _import_module
File "\opt\miniconda\lib\python3.6\site-packages\dill\_dill.py", line 305, in load
File "C:\<edited>\score.py", line 40, in init
File "C:\<edited>\score.py", line 90, in <module>
File "\opt\miniconda\lib\python3.6\runpy.py", line 85, in _run_code
File "\opt\miniconda\lib\python3.6\runpy.py", line 96, in _run_module_code
File "\opt\miniconda\lib\python3.6\runpy.py", line 263, in run_path
File "\opt\miniconda\lib\python3.6\runpy.py", line 85, in _run_code
File "\opt\miniconda\lib\python3.6\runpy.py", line 193, in _run_module_as_main
我不清楚这是什么原因造成的。我可以在我的本地环境中取消文件,但不知何故不能在目标环境中。
import dill as pickle
pickle._dill._reverse_typemap['ClassType'] = type
with open(prep_transformer_path, 'rb') as file:
prep_transformer = pickle.loads(file)
这基本上是在生活中导致错误的代码。有什么线索我可能会忽略吗?由于我在此之前解决了另一个问题,所以我确实添加了 typemap 的东西。
它正在腌制十几个自制的 Transformer 安装类。
酸洗代码如下:
import dill as pickle
# Dump the prep pkl file
with open(os.path.join(output_models_directory, 'prep.pkl'), 'wb') as file:
pickle.dump(trainingPrepPipe, file, protocol=pickle.HIGHEST_PROTOCOL)
提前感谢您的帮助!
【问题讨论】:
标签: python scikit-learn pickle joblib dill