首页 > 解决方案 > 未找到 Python Linux Google drive API 客户端安装模块

问题描述

我正在尝试在我的本地 Linux 机器上开始使用来自 python 的 google drive API。我希望能够从我的本地机器将文件来回移动到 Google 驱动器。我昨天刚开始学习 Python,但在使用 Google 快速入门说明时遇到了问题。当我尝试使用 python3在https://developers.google.com/drive/v3/web/quickstart/python运行快速入门代码时,我收到此错误:

ImportError: No module named 'apiclient.discovery'

这是由文件顶部的这些导入语句产生的。

from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

按照说明,我安装了我认为我需要的命令

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

但我收到了这个错误。我注意到如果我注释掉该行

from apiclient.discovery import build

然后其余的导入语句就可以了,脚本开始执行并且浏览器弹出要求进行身份验证,但是很明显,当它到达脚本中的“构建”函数调用时它会中断。我究竟做错了什么?

我已经尝试将包含模块的 lib 文件夹安装到我的脚本正在执行的本地目录中,但我认为这仅在您使用我所使用的谷歌应用引擎时才重要....不是吗?我不认为我是对的?当我这样做时,我尝试将导入语句更改为

from lib.googleapiclient.discovery import build

我得到了同样的错误,但我实际上已经在我的本地目录中的 lib/googleapiclient/discovery.py 中打开了该文件,并且代码是

...
def build(serviceName,
      version,
      http=None,
      discoveryServiceUrl=DISCOVERY_URI,
      developerKey=None,
      model=None,
      requestBuilder=HttpRequest,
      credentials=None,
      cache_discovery=True,
      cache=None):
...

那么为什么这个导入语句不起作用呢?我也尝试过从

from apiclient.discovery import build

from googleapiclient.discovery import build

我得到同样的错误,没有名为“googleapiclient”的模块

我昨天用 pip 安装了 3rd 方模块,我从来没有遇到任何问题。这是怎么回事?谢谢你的帮助。

标签: pythonmodulegoogle-drive-apipython-import

解决方案


  1. 检查您的 python 和 pip 版本,并尝试 pip freeze 检查已安装的包。

    python --version
    pip --version
    pip freeze
    

    请检查您的 python 版本,您的 pip 来自哪里(/usr/lib/python2.7 或 /usr/lib/python3.6 或其他 virtualenv)以及是否google-api-python-client在 pip freeze 的输出中。

  2. 尝试重新安装google-api-python-client

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

  3. apiclient是旧名称,因此最好googleapiclient用于导入。

    from googleapiclient.discovery import module


推荐阅读