我正在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']
当我sudo pip install -r REQUIREMENTS
在私有Ubuntu AMI上使用相同的软件包时(无疑已经过修改以具有“更好的安全性”),这些软件包似乎安装得很好,但是当我从命令行运行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的不同之处(可能引起问题)时遇到了麻烦。
事实证明该/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
这是一个非常奇怪的问题,我希望有人有一天会发现这个问题有用(或者更好的是,首先不会遇到问题)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句