ImportError:没有名为apiclient.discovery的模块

Huy*_*wer 137 python google-app-engine google-api-python-client

我在Google App Engine中遇到此错误的Python使用了Google Translate API,但我不知道如何解决,

<module>
from apiclient.discovery import build
ImportError: No module named apiclient.discovery
Run Code Online (Sandbox Code Playgroud)

我将尝试设置指示Google App Engine SDK的环境,并再次上传到Google Apps Engine,始终收到错误,

错误:服务器错误

服务器遇到错误,无法完成您的请求.如果问题仍然存在,请报告您的问题并提及此错误消息以及导致该问题的查询.

请告诉我如何解决,

谢谢

更新:修复了 遵循Nijjin的帮助,我通过添加以下文件夹修复了问题,

apiclient, gflags, httplib2, oauth2client, uritemplate

Jor*_*vis 214

您应该能够通过这个简单的安装获得这些依赖项:

sudo pip install --upgrade google-api-python-client
Run Code Online (Sandbox Code Playgroud)

这在python快速入门页面上有所描述.

  • 这样做之后我遇到了同样的错误.好吧,我用`C:\> C:\ Python27\Scripts\easy_install-script.py --upgrade google-api-python-client`安装它,然后显示`Installed c:\ python27\lib\site-packages\google_api_python_client -1.3.1-py2.7.egg`并尝试再次安装`google-api-python-client 1.3.1已经是easy-install.pth中的活动版本了 (6认同)
  • 答案中提供的链接转移到[Googles Python入门](https://developers.google.com/api-client-library/python/start/get_started) (5认同)
  • 我不知道,为什么没有'sudo`的上述命令对我有效. (3认同)
  • 对于Python 3,需要在上述命令中将pip替换为pip3。对于某些我相信的人来说可能并不明显。 (2认同)
  • 使用 Debian 9 Stretch,我使用了命令 `sudo apt-get install python-googleapi python-oauth2client` 和命令 `sudo apt-get install python3-googleapi python3-oauth2client`。它工作得很好,我更喜欢这种方式,因为我有一个包管理器就足够了。 (2认同)

Jes*_*ebb 106

apiclient是图书馆的原始名称.
在某些时候,它被切换为googleapiclient.

如果您的代码在Google App Engine上运行,则两者都应该有效.

如果您自己运行应用程序,安装了google-api-python-client,两者都应该可以正常运行.

虽然,如果我们看一下软件包模块的源代码apiclient__init__.py,我们可以看到apiclient模块只是为了向后兼容而保持不变.

保留apiclient作为googleapiclient的别名.

所以,你真的应该googleapiclient在你的代码中使用,因为apiclient别名只是为了不破坏遗留代码而被维护.

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build
Run Code Online (Sandbox Code Playgroud)


Nij*_*nan 10

apiclient不在appengine运行时提供的第三方库列表中:http://developers.google.com/appengine/docs/python/tools/libraries27.

你需要复制apiclient到你的项目目录和你需要复制这些uritemplatehttplib2过.

注意:文档列表中未提供的任何第三方库都必须复制到appengine项目目录中


Jon*_*sen 7

如果以上解决方案都不适合您,请考虑您是否通过Anaconda安装了python.如果是这种情况,那么使用conda安装google API库可能会解决它.

跑:

python --version
Run Code Online (Sandbox Code Playgroud)

如果你得到类似的东西

Python 3.6.4 :: Anaconda, Inc.
Run Code Online (Sandbox Code Playgroud)

然后尝试:

conda install google-api-python-client
Run Code Online (Sandbox Code Playgroud)

正如bgoodr在评论中指出的那样,您可能需要指定渠道(思考存储库)来获取Google API库.在撰写本文时,这意味着运行命令:

conda install -c conda-forge google-api-python-client
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请访问https://anaconda.org/conda-forge/google-api-python-client

  • 实际上显然需要一个频道.请参阅https://anaconda.org/conda-forge/google-api-python-client(请参阅-c选项). (2认同)
  • 谢谢@bgoodr.我已将您的评论纳入答案中. (2认同)

var*_*run 6

对于app引擎项目,你必须通过键入在本地安装lib

pip install -t lib google-api-python-client
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多


小智 5

可以下载Google API Python客户端库,其中包含库及其所有依赖项,在项目的下载部分中命名为google-api-python-client-gae- <version> .zip.只需将其解压缩到App Engine项目中即可.


Kei*_*day 5

确保您只google-api-python-client安装了.如果已apiclient安装,则会导致冲突.所以,运行以下内容:

sudo pip uninstall apiclient
Run Code Online (Sandbox Code Playgroud)


mrm*_*les 5

我通过重新安装包解决了这个问题:

pip install --force-reinstall google-api-python-client
Run Code Online (Sandbox Code Playgroud)


小智 5

对于python3,这对我有用:

sudo pip3 install --upgrade google-api-python-client
Run Code Online (Sandbox Code Playgroud)