【问题标题】:No module named google_auth_httplib2没有名为 google_auth_httplib2 的模块
【发布时间】:2017-06-24 07:03:45
【问题描述】:

目标:将 GAE 与 Python 和 Google Cloud Storage 结合使用,以更有效地存储和提供图像,最终使用图像 API。

问题:尽管安装成功,但找不到正确的模块(httplib2 和 6)。


运行时示例

Python 代码示例 A:

from google.cloud import storage
from google.appengine.api import app_identity
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
import webapp2

返回样本 A:

ImportError: 没有名为 google_auth_httplib2 的模块

注意:六个也有类似的错误。 “没有名为 6 的模块”


安装详情

python 安装在:

C:\Python27

六个安装在:

C:\python27\lib\site-packages\six-1.10.0-py2.7.egg

httplib2 安装在:

C:\Python27\Lib\site-packages\httplib2-0.9.2-py2.7.egg-info

在命令行中运行“C:>pip install httplib2”返回:

“Requirement already satisfied: httplib2 in c:\python27\lib\site-packages”

在命令行中运行“C:>pip install 6”返回:

Requirement already satisfied: six in c:\python27\lib\site-packages\six-1.10.0-py2.7.egg

GAE 云存储客户端安装在:

C:\Python27\Lib\site-packages\GoogleAppEngineCloudStorageClient-1.9.22.1-py2.7.egg-info

GAE SDK 服务器托管使用“dev_appserver.py”。在:

C:\Users\sebastian\Documents\Web Projects\Cookbook

此位置还包含 app.yaml 文件。

将模块复制到 app.yaml 位置

httplib2six-1.10.0-py2.7.egg 文件夹复制到我的app.yaml 目录。


附录 1:

App.yaml

runtime: python27
api_version: 1
threadsafe: true

handlers:

    - url: /
      script: homegcs.app

    - url: /static
      static_dir: static

    - url: /.*
      script: home.app

    - url: /index\.html
      script: home.app

    - url: /stylesheets
      static_dir: stylesheets

    - url: /(.*\.(gif|png|jpg))$
      static_files: static/\1
      upload: static/.*\.(gif|png|jpg)$

    - url: /admin/.*
      script: admin.app
      login: admin

    - url: /.*
      script: not_found.app

Folder structure containing App.yaml

【问题讨论】:

    标签: python-2.7 google-app-engine google-cloud-storage httplib2 six


    【解决方案1】:

    您的包需要与项目一起上传,或者添加到 app.yaml(如果它们在 App Engine 中可用)。 six 是一个可用的库,所以,在app.yaml 中,添加:

    libraries:
    - name: six
      version: "1.9.0"
    

    如果您将httplib2 包与app.yaml 放在同一级别,它应该与项目一起上传,并且可以在生产环境中使用。

    另一位用户也将google_auth_httplib2 添加为一个包,并将其与项目一起上传。虽然我认为应该可以直接使用:

    Module google_auth_httplib2 not found after pip installing google-cloud How can I fix it?

    ** 您在app.yaml 中的 url 处理程序中也存在问题。这是所有网址的通配符:

    - url: /.*
        script: home.app
    

    因此,下面的每个处理程序都不会被命中。

    【讨论】:

    • 谢谢,这肯定解决了 4 个明显问题中的 2 个。 (六个和 yaml 处理程序)。我已经添加了文件夹结构的图片,因为我的 app.yaml 目录中已经有 httplib2 和 google_auth_httplib2 但是它仍然会抛出关于 google_auth_httplib2 not found 的相同错误。
    • httplib2google_auth_httplib2 是 2 个不同的包。您的错误是您的代码正在寻找google_auth_httplib2,而您却拥有httplib2。切换您的代码,或使用正确的包(请参阅我的答案中的链接,了解其他用户是如何做到的)
    【解决方案2】:

    您需要在项目中安装 google-cloud,如下所示:

    pip install google-cloud -t [my_project]/lib/google-cloud
    

    确保首先在您的 lib 文件夹中创建该 google-cloud 文件夹。完成此操作后,更改或创建 appengine_config.py(在 /my_project 中)并包含以下内容:

    from google.appengine.ext import vendor
    
    vendor.add('lib/google-cloud')
    

    现在一切都应该正常了。

    【讨论】:

    • 谢谢,似乎已经修复了一些问题。错误现在显示为“从 google.cloud 导入存储导入错误:没有名为云的模块”@yamilabugattas
    • 您确定该文件夹在 appengine_config.py 中指定的目录中吗?确保您在该文件夹中安装 pip。还可以尝试在文件开头添加 from future import absolute_import。
    猜你喜欢
    • 2022-11-08
    • 1970-01-01
    • 2019-03-28
    • 2017-12-30
    • 2018-01-06
    • 2018-11-11
    • 2015-04-10
    • 2013-11-27
    • 2014-02-17
    相关资源
    最近更新 更多