Python 2.7 Caffe到Tensorflow(Ethereon的Kaffe):TypeError:不应直接创建描述符,而应仅从其父级检索描述符
我想使用ethereon的精彩软件包caffe tensorflow,我遇到了中描述的相同问题 : 当我运行示例或尝试导入caffepb时,收到错误消息:Python 2.7 Caffe到Tensorflow(Ethereon的Kaffe):TypeError:不应直接创建描述符,而应仅从其父级检索描述符,python-2.7,tensorflow,caffe,protocol-buffers,Python 2.7,Tensorflow,Caffe,Protocol Buffers,我想使用ethereon的精彩软件包caffe tensorflow,我遇到了中描述的相同问题 : 当我运行示例或尝试导入caffepb时,收到错误消息: >>> import caffepb Traceback (most recent call last): File "<stdin>", line 1, in <module> File "caffepb.py", line 28, in <module> typ
>>> import caffepb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "caffepb.py", line 28, in <module>
type=None),
File "/home/me/anaconda/python2.7/site-packages/google/protobuf/descriptor.py", line 652, in __new__
_message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors should not be created directly, but only retrieved from their parent.
>>导入caffepb
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“caffepb.py”,第28行,在
类型=无),
文件“/home/me/anaconda/python2.7/site packages/google/protobuf/descriptor.py”,第652行,新__
_message.message.\u CheckCalledFromGeneratedFile()
TypeError:不应直接创建描述符,而应仅从其父级检索描述符。
我在linux 64位UBUNTU 14.04机器上使用Tensorflow 0.7.0,protobuf 3.0.0b2.post(但在3.0.0a4和3.0.0b2上也使用了Tensorflow)和Python 2.7和anaconda
我多次尝试重新安装protobuf和tensorflow,因为我认为不同的protobuf安装之间很可能存在冲突(或者至少这是github问题的结论),但即使在组合使用pip安装protobuf之后,我也无法使其工作,pip卸载protobuf或直接安装protobuf.whl
你有什么建议
编辑:使用虚拟环境可能是一个解决方案,但如果可能的话,我想避免它我也遇到了同样的问题。我的解决方案(变通方法)与问题中的一条评论相同-在virtualenv中安装/运行tf和protobuf3(以及任何东西)
我不知道到底是什么问题。这只是一个可以尝试的解决方法。将任何文件创建描述符重命名为后缀“\u pb2.py”将解决此问题 更新(2017年4月4日):
在“caffe tensorflow”项目中,我将“kaffe/caffe/caffepb.py”重命名为“caffe_pb2.py”,解决了这个问题。这是我在这个项目中找到的唯一一个创建PB描述符的文件。Kai Yu的解决方案也对我有用。但是,我还建议删除caffe tensorflow/kaffe/caffe中的“caffepb.pyc”文件,以确保所有代码都不能使用旧名称的caffe_pb2模块
我相信这个模块只在文件caffe tensorflow/kaffe/caffe/resolver.py中使用。感谢您的回答,但是这个解决方法在github问题中已经提到了,并没有说服我,因为它是一个太激进的解决方案。非常有趣的解决方案如果是真的,我将很快尝试!你能说得更具体些吗?您指的是存储库中的文件还是系统中安装的文件?