Python:ImportError: No module named indexes.base

来源:互联网 发布:mac电池循环次数 cmd r 编辑:程序博客网 时间:2024/05/19 17:06

我在使用pickle重新load数据的时候出现的问题,错误的全部提示如下:

Traceback (most recent call last):  File "segment.py", line 17, in <module>    word2id = pickle.load(pk)  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1378, in load    return Unpickler(file).load()  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load    dispatch[key](self)  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1090, in load_global    klass = self.find_class(module, name)  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1124, in find_class    __import__(module)ImportError: No module named indexes.base
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

出现的原因

相同的代码和数据在两台不同的机器上运行。起初我认为这台出现错误的机器少了某些python安装包。但是安装的包太多,我没办法去去一个个尝试,幸好使用的是virsualenv,直接将另一台机器上的环境拷贝到这台机器上,运行之后是没有问题的,但为了弄清是缺少哪一个python安装包,于是我使用原来的编译环境,重新使用pickle生成原来需要load的数据,然后重新load,这时候没有报错。

总结

总结原因,是由于原来在生成pickle文件的时候使用的pandas版本和现在load pickle文件的版本不相同导致的。所以不管是写python还是其他语言的代码,编译环境很重要,一旦某一个包的版本不同也有可能导致程序的错误


用pip安装指定版本的包。

pip install pandas==x.x.x