【问题标题】:Google Cloud Datastore Python3 AttributeError on include包含上的 Google Cloud Datastore Python3 AttributeError
【发布时间】:2021-01-12 21:23:11
【问题描述】:

我写了一个python3 scrapy spider,我已经运行了很多次了。现在我想向它添加谷歌云数据存储功能(从数据存储读取/写入)。我去按照谷歌文档页面上的说明进行操作。但是,当我在脚本中包含该库时,甚至没有调用单个函数(仅包含它会导致此问题),我收到以下错误:

AttributeError:模块“google.protobuf.descriptor”没有属性“_internal_create_key”

我在 Stackoverflow 和在线上进行了搜索,建议的响应是升级 google protobuf 包的安装(如此处所示:)

How to solve "AttributeError: module 'google.protobuf.descriptor' has no attribute '_internal_create_key"?

我尝试了那里列出的步骤,但没有成功。我仍然得到同样的错误。请记住,我使用了 pip (pip3) 的 python3 版本来尝试升级我的 protobuf。它说它已经是最新的,并说我使用的是 3.13.0 版本。正在加载的 python 版本是 3.8.2。但是,其他人将protoc --version 列为要运行的命令,但是当我运行该协议时未安装该协议并且找不到该命令。请记住,关于 protobuf 的正确和工作版本是 3.13.0,有多个 cmets,pip3 已经说过我有。我附上了调用堆栈的屏幕截图,以防它对某人有意义。

编辑:我刚刚尝试过的一件事是我运行了 python3 交互式 shell,并输入了“from google.cloud import datastore”,它没有出现错误。这可能是关于问题所在的线索吗?此外,当我发出命令pip3 install --upgrade google-cloud-datastore 时,它表示所有要求都已满足,包括 google protobuf >= 3.12.0,它的 3.13.0 是正确的。但是问题仍然存在。

Edit2:我还创建了一个 windows 10 vm,并且包含在那里工作正常,python3/anaconda 也一样。如果是这种情况,我最终可能只是在 vm 中进行开发。我的 ubuntu 机器上似乎存在某种陈旧/错误的旧 protobuf 文件或依赖项。

【问题讨论】:

  • 似乎是缓存问题或按此顺序发生在您的 ubuntu 机器上的事情。也许尝试删除您的 requirements.txt 并重新下载所有包和依赖项,看看错误是否仍然存在?
  • 我在我的脚本附近没有看到 requirements.txt 文件。我当然还没有创建一个。我只有一个 py 脚本文件。我想当我有时间的时候我接下来会尝试为脚本依赖项(venv)设置一个虚拟环境,看看是否能解决它。我还将研究创建自己的 requirements.txt 文件,以及这两者如何相互作用。

标签: python python-3.x google-cloud-platform include google-cloud-datastore


【解决方案1】:

这个问题在几天后神奇地自行解决了。正如之前的评论者所说,这似乎是一个缓存问题,并且缓存已被清理,现在scrapy webcrawler 工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 2019-11-28
    • 2020-12-30
    • 2021-10-31
    • 2023-03-20
    • 2015-08-21
    • 2021-01-13
    • 2018-04-18
    相关资源
    最近更新 更多