我在python 2.7中安装了莳萝,但是当我尝试解开模型时,它说“没有名为莳萝的模块”。腌制的文件包含熊猫系列。
编辑: 这是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
答案 0 :(得分:3)
如果您的Elastic beanstalk或错误环境上的版本大于本地版本,则将莳萝包降级为可在EC2或本地计算机上运行的包。 在本地计算机上,检查当前的莳萝包:
pip freeze | grep -i 'dill'
例如,它输出:dill == 0.2.7.1,该值低于beantalk上的值
然后使用降级
pip install dill==0.2.7.1
答案 1 :(得分:0)
两件事:
1)这看起来像是$ PATH问题(或类似的链接问题)...您似乎至少安装了两个python安装程序(一个安装在/ opt / python中,大概来自macports,另一个安装在/ usr / lib64,可能是venv的三分之一)。
我猜想,如果您仔细确认使用的是哪个python,并且哪个与您使用的$line =~ s/TIME=\"([0-9]+8.[0-9]+7)\"/TIME=\"00000000.0000000\"/g
相对应,您可能会发现pip
,而您使用的其他模块并不全部相同的python安装。
2)请注意,在回溯的第一行中您似乎正在使用dill
...如果您想使用pickle.load
,则不应该使用dill
解开序列化的对象?