包与'sudo python'一起存在,但在运行'python'时不存在`

包与'sudo python'一起存在,但在运行'python'时不存在`,python,ubuntu,amazon-web-services,Python,Ubuntu,Amazon Web Services,我正在AWS上配置一台机器。当我在AWS公共云上设置这台机器时(使用标准版本的Ubuntu AMI),我成功地sudo pip install-r REQUIREMENTS我需要的所有python软件包,如系统范围python发行版中的Flask: [bash]$ python -c "import flask; print flask.__file__" /usr/local/lib/python2.7/dist-packages/flask/__init__.pyc [bash]$ pyth

我正在AWS上配置一台机器。当我在AWS公共云上设置这台机器时(使用标准版本的Ubuntu AMI),我成功地
sudo pip install-r REQUIREMENTS
我需要的所有python软件包,如系统范围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安装-r要求时(这无疑是为了具有“更好的安全性”),这些软件包看起来安装得很好,但是当我从命令行运行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
sys.path
在运行
python
sudo-python
时是相同的,并且它们的文件中似乎都有
/usr/local/lib/python2.7/dist包

[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上有什么不同之处,可能是导致这个问题的原因。

您的路径中是否有
/usr/local/lib/
?使用echo$PATH检查
。如果没有,则通过以下SA线程添加它:

结果是
/usr/local/lib/python2.7/dist packages
目录没有
a+r
访问权限。因此,我们不得不运行一些命令来修复问题:

# change permissions on the directories to read and execute, files to read
find /usr/local/lib/python2.7 -type d | xargs sudo chmod a+rx
find /usr/local/lib/python2.7 -type f | xargs sudo chmod a+r

这是一个非常奇怪的问题,我希望有一天有人会发现这个问题很有用(或者,更好的是,不要一开始就遇到这个问题)。

这很奇怪。在我看来,有三件事需要检查:1)flask安装的文件/目录的权限。2) 检查
pip
版本,确保它与您的Python版本匹配。执行
pip--version
并确保它是正确的版本(Python2.7或Python3.x)。3) 我假设您的需求文件中还有其他依赖项。尝试一个新的环境,只安装flask(只是为了排除其他lib引起问题的可能性)。@larsbutler结果是
/usr/lib/python2.7/dist packages
目录有一些权限问题。我将在下面添加一个问答式的回答来揭示答案。非常感谢你的帮助!
# change permissions on the directories to read and execute, files to read
find /usr/local/lib/python2.7 -type d | xargs sudo chmod a+rx
find /usr/local/lib/python2.7 -type f | xargs sudo chmod a+r