我写了一个python3爬虫,我已经跑了很多次了。现在我想添加google云数据存储功能(从数据存储读取/写入)。我按照谷歌文档页面上的说明进行了操作。然而,当我在我的脚本中包含这个库时,甚至没有调用一个函数,(只包含它会导致这种情况),我得到以下错误:
AttributeError:模块'google.protobuf.descriptor‘没有特性'_internal_create_key’
我在Stackoverflow和online上进行了搜索,得到的建议是升级google protobuf包的安装(如下所示:)
我尝试了上面列出的步骤,但没有成功。我仍然得到相同的错误。请记住,我尝试升级protobuf时使用的是pip (pip3)的python3版本。它说它已经是最新的,并说我使用的是3.13.0版本。正在加载的python版本为3.8.2。但是,其他人将protoc --version列为要运行的命令,但在我运行时,该协议没有安装,也找不到该命令。请记住,关于protobuf的正确和工作版本是3.13.0,有很多评论,pip3已经说我有了。我附上了一个调用堆栈的截图,以防它对某人有什么意义。

编辑:我刚刚尝试过的一件事是,我运行了python3交互式外壳程序,并输入"from google.cloud import datastore",它没有出现任何错误。这可能是问题所在的线索吗?另外,当我发出命令pip3 install --upgrade google-cloud-datastore时,它说所有的要求都已经满足了,包括google protobuf >= 3.12.0,这是正确的,因为它的3.13.0。但是,问题仍然存在。
Edit2:我还创建了一个windows10vm,其中的include在python3/anaconda上运行得很好。如果是这样的话,我可能最终只会在vm中进行开发。在我的ubuntu机器上肯定有一些旧的协议文件或依赖项是陈旧的/错误的。
发布于 2020-10-07 07:30:04
这个问题在几天后神奇地解决了。正如之前的评论者所说,这似乎是一个缓存问题,缓存被清理了,现在抓取的网络爬虫工作得很好。
https://stackoverflow.com/questions/64082781
复制相似问题