0

我在 AWS 云中有一台服务器。它正在运行一个可以很好地调用 Google STT API 的烧瓶 API。然后,我尝试通过设置 virtualenv 并让 API 在那里运行来“生产”API,以运行 Gunicorn。

当我尝试在虚拟容器中运行 API 时,它给出了关于导入 google api 客户端的错误。我的 virtualenv 中没有 google api 客户端文件夹,所以我从主要的 python2.7 站点包文件夹中复制了文件夹。然后我收到一个错误,说它无法在 googleapiclient/discovery.py 中导入六个。错误是“ImportError:没有名为 6 的模块”。

我的 virtualenv python 文件夹中没有六个目录。所以我试图从我的主要 python2.7 文件夹中复制一个名为 6-1.10.0.dist-info 的文件夹,但这没有帮助。我尝试了很多事情......例如强制重新安装,但仍然与来自 googleapiclient/discovery.py 的 google api 参考相同的错误。所以我尝试了“sudo pip 卸载六;sudo pip 安装六”。这已成功卸载,但现在我无法再次安装。当我运行“sudo pip install 6”时,我得到以下信息:

Traceback (most recent call last):
  File "/usr/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 48, in <module>
import six
ImportError: No module named six

我也尝试过 easy_install 和 --upgrade --ignore-installed 等选项,但行为没有改变。

到底他妈发生了什么?为什么我不能重装六个?为什么它无论如何都不会被识别?


更新所以这篇文章 stackoverflow.com/questions/13270877/... 帮助我将六个安装回主 python 环境。我的 API 现在在那里运行良好。但同样的方法对虚拟环境不起作用。

运行“unset PYTHONPATH”似乎帮助我将模块安装到 virtualenv 中。AWS 映像似乎已经添加了一个混淆 virtualenv 的 python 路径。但是,我仍然在下面用六个胡说八道。到底是怎么回事?

(myprojectenv)[ec2-user@ip-172-31-29-83 myapi]$ python api.py
Traceback (most recent call last):
  File "api.py", line 3, in <module>
    from googleapiclient import discovery
  File "/home/ec2-user/myapi/myprojectenv/local/lib/python2.7/site-packages/googleapiclient/discovery.py", line 20, in <module>
import six
ImportError: No module named six
(myprojectenv)[ec2-user@ip-172-31-29-83 myapi]$ pip install --upgrade six
Requirement already up-to-date: six in ./myprojectenv/lib/python2.7/site-packages
4

0 回答 0