【问题标题】:Import six module not working despite pip installation尽管安装了 pip,但导入六个模块不起作用
【发布时间】:2018-06-21 19:03:27
【问题描述】:

我正在构建一个网络应用程序(基于谷歌应用程序引擎和 python 2.7)并尝试导入 Six.move 模块。但是虽然安装了“六”,但是导入的时候并没有找到(注意,我还没有使用像Django这样的框架)。

在我的工作环境(env)上,我跑了:

| => pip show six
Name: six

Version: 1.11.0
Summary: Python 2 and 3 compatibility utilities
Home-page: http://pypi.python.org/pypi/six/
Author: Benjamin Peterson
Author-email: benjamin@python.org
License: MIT
Location: /path/to/file/DeployedProjects/goinpact/env/lib/python2.7/site-packages
Requires: 

调用此包的模块是“google.oauth2”中的“id_token.py”

所以,当我运行时

from google.oauth2 import id_token 

然后加载我的网络应用程序,导入错误日志显示:

File "/path/to/file/DeployedProjects/goinpact/env/lib/python2.7/site-packages/google/oauth2/id_token.py", line 19, in <module>
from six.moves import http_client
ImportError: No module named six.moves 

id_token.py 模块调用:

from six.moves import http_client

...导致上面的日志导入错误。

我的理解是,如果在我的环境 (env) 上,我可以看到安装了“six”,那么从我的应用程序导入这个模块应该没有问题。这在某种程度上不正确吗?

我一定遗漏了一些基本的东西,但不明白什么?请帮忙!

PS:我也尝试过的资源:

一) 甚至从我的“main.py”文件中调用:

import six

导致相同的 ImportError。

B) ImportError: No module named six

C) 未解决: Cannot install python six module

【问题讨论】:

  • 我会检查 lib 中的包是否安装了它们自己的(可能是旧的)six 版本,然后可能在供应商要求文件中指定您想要的版本并重新安装您的供应商包。
  • 如果这是一个标准的 env 应用程序,请尝试使用 GAE 提供的 six 库,方法是在您的 app.yaml 文件的 libraries 部分中请求它。见cloud.google.com/appengine/docs/standard/python/tools/…
  • 我是这样解决这个问题的:stackoverflow.com/a/51616840/901444

标签: python-2.7 google-app-engine google-oauth six


【解决方案1】:

当 Python 虚拟环境被激活时,路径被重写以添加 {env}/lib/python2.7/。然而,GAE 本身并不知道虚拟环境。因此,如果您希望 six(或其他一些纯 Python 库)可用于您的应用程序,您需要自己安排。如何做到这一点的说明在https://cloud.google.com/appengine/docs/standard/python/tools/using-libraries-python-27

【讨论】:

    猜你喜欢
    • 2022-07-01
    • 1970-01-01
    • 2016-07-05
    • 2021-01-06
    • 2015-08-18
    • 1970-01-01
    • 2021-03-30
    • 2018-05-27
    • 2018-06-13
    相关资源
    最近更新 更多