2016-03-08 74 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 

這是一個非常奇怪的問題,我希望有人有一天發現這個有用的(或更好,但不運行的問題首先)。

相關問題