ImportError: No module named indexes.base

问题重现

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

Traceback (most recent call last):
  File "segment.py", line 17, in 
    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

出现的原因

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

总结

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

你可能感兴趣的:(python,pandas,Tensorflow修炼手册)