【发布时间】:2016-03-08 10:32:24
【问题描述】:
我正在 AWS 上配置一台机器。当我在 AWS 公共云上设置这台机器时(使用标准发行的 Ubuntu AMI),我可以在系统范围的 python 分发中成功地sudo pip install -r REQUIREMENTS 我需要的所有 python 包(如 Flask):
[bash]$ python -c "import flask; print flask.__file__"
/usr/local/lib/python2.7/dist-packages/flask/__init__.pyc
[bash]$ python -c "import pprint, sys; pprint.pprint(sys.path)"
['',
'/usr/local/lib/python2.7/dist-packages/setuptools-20.2.2-py2.7.egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
当我在私有 Ubuntu AMI 上使用相同的 sudo pip install -r REQUIREMENTS 时(无疑已经适应了“更好的安全性”),这些包似乎安装得很好,但是当我从命令行运行 python 时,我得到一个ImportError。
[bash]$ python -c "import flask; print flask.__file__"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named flask
有趣的是,使用 sudo 运行命令会产生我在公共 AWS 账户上获得的预期结果:
[bash]$ sudo python -c "import flask; print flask.__file__"
/usr/local/lib/python2.7/dist-packages/flask/__init__.pyc
sys.path 在运行 python 和 sudo python 时是相同的,并且两者似乎都有 /usr/local/lib/python2.7/dist-packages 存档:
[bash]$ python -c "import pprint, sys; pprint.pprint(sys.path)"
['',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
[bash]$ sudo python -c "import pprint, sys; pprint.pprint(sys.path)"
['',
'/usr/local/lib/python2.7/dist-packages/setuptools-20.2.2-py2.7.egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
非常欢迎在这里提出任何建议。我以前从未见过这样的事情,我无法弄清楚这个修改后的 Ubuntu AMI 有什么不同可能导致问题。
【问题讨论】:
-
这很奇怪。在我的脑海中,有三件事要检查:1)烧瓶安装的文件/目录的权限。 2) 检查
pip版本,并确保它与您的Python 版本匹配。执行pip --version并确保它是正确的版本(Python 2.7 或 Python 3.x)。 3)我假设您的需求文件中还有其他依赖项。尝试一个新的环境并只安装flask(只是为了排除其他库引起问题的可能性)。 -
@larsbutler 原来
/usr/lib/python2.7/dist-packages目录存在一些权限问题。我将在下面添加一个问答风格的回复来揭示答案。非常感谢您的帮助!
标签: python ubuntu amazon-web-services