python - 使用 pickle.load() 时没有名为 dill 的模块
python - No module named dill while using pickle.load()
我在 python 2.7 中安装了 dill,但是当我尝试解开我的模型时,它显示 "No module named dill"。腌制文件包含 pandas 系列。
编辑:
这是 ElasticBeanstalk 环境
上回溯的快照
File "/opt/python/current/app/app/models/classification.py", line 663, in __init__
self.lookupdict = pickle.load(open(<filepath>))
File "/usr/lib64/python2.7/pickle.py", line 1384, in load
return Unpickler(file).load()
File "/usr/lib64/python2.7/pickle.py", line 864, in load
dispatch[key](self)
File "/usr/lib64/python2.7/pickle.py", line 1096, in load_global
klass = self.find_class(module, name)
File "/usr/lib64/python2.7/pickle.py", line 1130, in find_class
__import__(module)
File "/opt/python/run/venv/local/lib64/python2.7/site-packages/gevent/builtins.py", line 93, in __import__
result = _import(*args, **kwargs)
ImportError: No module named dill
两件事:
1) 这看起来像 $PATH 问题(或者类似地,链接问题)...您似乎至少有两个 python 安装(一个在 /opt/python,大概来自类似 macports 的东西,一个在 /usr/lib64,可能还有一个在 venv。
我猜如果你仔细确认你使用的是哪个 python,以及哪个对应你使用的 pip
,你可能会发现 dill
和其他模块正在使用的并非都在同一个 python 安装中。
2) 请注意,在回溯的第一行中,您似乎正在使用 pickle.load
...如果您想使用 dill
,您不应该使用 dill.load
取消序列化对象?
如果您的 Elastic beanstalk 或错误环境上的版本高于您的本地版本,则将您的 dill 包降级为在您的 EC2 或本地计算机上运行的包。
在您的本地机器上,检查当前的 dill 包:
pip freeze | grep -i 'dill'
例如,它输出:dill==0.2.7.1,低于 beantalk
然后使用
降级
pip install dill==0.2.7.1
我在 python 2.7 中安装了 dill,但是当我尝试解开我的模型时,它显示 "No module named dill"。腌制文件包含 pandas 系列。
编辑: 这是 ElasticBeanstalk 环境
上回溯的快照File "/opt/python/current/app/app/models/classification.py", line 663, in __init__
self.lookupdict = pickle.load(open(<filepath>))
File "/usr/lib64/python2.7/pickle.py", line 1384, in load
return Unpickler(file).load()
File "/usr/lib64/python2.7/pickle.py", line 864, in load
dispatch[key](self)
File "/usr/lib64/python2.7/pickle.py", line 1096, in load_global
klass = self.find_class(module, name)
File "/usr/lib64/python2.7/pickle.py", line 1130, in find_class
__import__(module)
File "/opt/python/run/venv/local/lib64/python2.7/site-packages/gevent/builtins.py", line 93, in __import__
result = _import(*args, **kwargs)
ImportError: No module named dill
两件事:
1) 这看起来像 $PATH 问题(或者类似地,链接问题)...您似乎至少有两个 python 安装(一个在 /opt/python,大概来自类似 macports 的东西,一个在 /usr/lib64,可能还有一个在 venv。
我猜如果你仔细确认你使用的是哪个 python,以及哪个对应你使用的 pip
,你可能会发现 dill
和其他模块正在使用的并非都在同一个 python 安装中。
2) 请注意,在回溯的第一行中,您似乎正在使用 pickle.load
...如果您想使用 dill
,您不应该使用 dill.load
取消序列化对象?
如果您的 Elastic beanstalk 或错误环境上的版本高于您的本地版本,则将您的 dill 包降级为在您的 EC2 或本地计算机上运行的包。 在您的本地机器上,检查当前的 dill 包:
pip freeze | grep -i 'dill'
例如,它输出:dill==0.2.7.1,低于 beantalk
然后使用
降级pip install dill==0.2.7.1