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

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

<module> from apiclient.discovery import build ImportError: No module named apiclient.discovery 

我将尝试设置指向Google App Engine SDK的环境 ,然后再次上传到Google Apps Engine, 总是得到错误

错误:服务器错误

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

请告诉我如何解决,

谢谢

更新:修复按照Nijjin的帮助,我通过添加以下文件夹来解决问题,

apiclient, gflags, httplib2, oauth2client, uritemplate

你应该能够通过这个简单的安装来获得这些依赖关系:

 sudo pip install --upgrade google-api-python-client 

这在python的快速入门页面中有描述。

apiclient是图书馆的原始名称。
在某个时候,它被切换到了googleapiclient

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

如果你自己运行应用程序,安装google-api-python-client ,两者都应该可以工作。

虽然,如果我们看一下apiclient包的__init__.py模块的源代码 ,我们可以看到apiclient模块只是为了向后兼容而保留的。

保留作为googleapiclient别名的apiclient。

所以,你真的应该在你的代码中使用googleapiclient ,因为apiclient别名只是保持不破坏遗留代码。

 # bad from apiclient.discovery import build # good from googleapiclient.discovery import build 

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

您需要将apiclient复制到您的项目目录中,您也需要复制这些uritemplatehttplib2

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

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

对于应用程序引擎项目,你必须通过input来在本地安装lib

 pip install -t lib google-api-python-client 

在这里阅读更多

由于安装URITemplate模块时出现了一个错误,我也遇到了同样的问题。

这解决了这个问题:

 pip install --force-reinstall uritemplate.py 

确保你只安装了google-api-python-client 。 如果你已经安装好了,会造成碰撞。 所以,运行以下内容:

 sudo pip uninstall apiclient 

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

 pip install --force-reinstall google-api-python-client 

“google-api-python-client”需要:

 pip install uritemplate.py 

解决GAE开发服务器上的问题:

 from googleapiclient.discovery import build ImportError: No module named googleapiclient.discovery 

我遇到了同样的问题。 这工作:

 >>> import pkg_resources >>> pkg_resources.require("google-api-python-client") [google-api-python-client 1.5.3 (c:\python27), uritemplate 0.6 (c:\python27\lib\site-packages\uritemplate-0.6-py2.7.egg), six 1.10.0 (c:\python27\lib\site-packages\six-1.10.0-py2.7.egg), oauth2client 3.0.0 (c:\python27\lib\site-packages\oauth2client-3.0.0-py2.7.egg), httplib2 0.9.2 (c:\python27\lib\site-packages\httplib2-0.9.2-py2.7.egg), simplejson 3.8.2 (c:\python27\lib\site-packages\simplejson-3.8.2-py2.7-win32.egg), six 1.10.0 (c:\python27\lib\site-packages\six-1.10.0-py2.7.egg), rsa 3.4.2 (c:\python27\lib\site-packages\rsa-3.4.2-py2.7.egg), pyasn1-modules 0.0.8 (c:\python27\lib\site-packages\pyasn1_modules-0.0.8-py2.7.egg), pyasn1 0.1.9 (c:\python27\lib\site-packages\pyasn1-0.1.9-py2.7.egg)] >>> from apiclient.discovery import build >>> 

当我使用sudo的时候,它只与我一起工作:

 sudo pip install --upgrade google-api-python-client