小记:解决问题ImportError: cannot import name symbol_database

来源:互联网 发布:js打开a标签的链接 编辑:程序博客网 时间:2024/06/06 13:22

用caffe时遇见一个问题,看见有人说重新编译一遍后解决了类似的问题

于是就果断地make clean了..

然后问题没解决,又出现了新问题,之前能用的测试代码,运行时出现了ImportError: cannot import name symbol_database

一看就发现了是protobuf出现了问题,根据@dupuleng 的博文CAFFE: cannot import symbol_database 找到了我的protobuf的位置也是:/usr/lib/python2.7/dist-packages/google/protobuf

按他的方法,我将symbol_database.py拷贝到protobuf位置下,在我这里并没有解决问题,又出现了AttributeError: 'DescriptorPool' object has no attribute 'AddFileDescriptor'的问题

所以我决定重新安装protobuf

在网上寻求帮助的时候,我发现不同的人用不同的方法都解决了标题的问题,我试过了sudo pip install -Iv protobuf==3.0.0-alpha-1, sudo apt-get install libprotobuf-dev等等方法,都没有起作用,最后我通过sudo apt-get remove python-protobuf删除了我上述位置的protobuf,然后感谢@诚石 的博文python版protobuf安装,按照他的方式,我在我下的2.6.1版本的protobuf文件夹下依次按照步骤执行:

tar zxvf protobuf-2.6.1.tar.gz 
cd protobuf-2.6.1 
./configure 
make 
make check 
make install
cd python 
python setup.py build 
python setup.py test 
python setup.py install

执行完后会在 protobuf-2.6.1/python 文件夹下出现一个google的文件夹,将这个文件夹用管理员的方式复制到/usr/lib/python2.7/dist-packages下,也就是上面说的protobuf的位置,然后我的问题就解决了

虽然是一个小问题,怎么遇到的我也是挺奇怪的,在网上也看到了很多很多的解决方式,我这里的情况是这么解决的,所以就记录一下吧。不过从这次来看,貌似用apt-get install python-protobuf的方式安装protobuf不太行,会少东西,就这样啦。