2016-03-08 73 views
0

我在AWS上供应计算机。当我在AWS公共云上设置本机时(使用标准版本的Ubuntu AMI),我可以在系统范围的python发行版中成功获得我需要的所有python软件包(如Flask):软件包中存在`sudo python`,但不是运行`python`时

[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账号获取:运行pythonsudo python

[bash]$ sudo python -c "import flask; print flask.__file__" 
/usr/local/lib/python2.7/dist-packages/flask/__init__.pyc 

sys.path是相同的,都似乎对文件/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有什么不同,可能会导致这个问题。

+2

这很奇怪。关闭我的头顶,有三件事情要检查:1)对烧瓶安装的文件/目录的权限。 2)检查'pip'版本,并确保它匹配你的Python版本。做一个'pip --version'并确保它是正确的版本(Python 2.7或Python 3.x)。 3)我假设您的需求文件中还有其他依赖项。尝试新的环境,并_only_安装瓶(只是为了排除其他库导致问题的可能性)。 – larsbutler

+0

@larsbutler事实证明'/ usr/lib/python2.7/dist-packages'目录有一些权限问题。我会在下面添加一个问答风格的回应来揭示答案。非常感谢你的帮助! – dino

回答

0

事实证明,在/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 

这是一个非常奇怪的问题,我希望有人有一天发现这个有用的(或更好,但不运行的问题首先)。

相关问题