2016-11-03 96 views
0

我有一臺運行OSX Yosemite的機器(它已經通過幾個版本的OSX,這可能會有所不同)。爲什麼OSX沒有運行我得到的python蟒蛇

我注意到一個anomily具有取決於腳本是否直接運行庫蟒蛇是否可以導入,即

./Myscript.py 

,或明確調用蟒蛇

python Myscript.py 

現在,如果我鍵入

$whereis python 
/usr/bin/python 

而我腳本中的shebang行是

#!/usr/bin/python 

所以我認爲在這兩種情況下運行的是相同版本的python。

但調查後,我發現

$python --version 
Python 2.7.6 
$/usr/bin/python --version 
Python 2.7.10 

所以它似乎是正在執行的蟒蛇是不是我弄的時候我做了whereis

任何人都可以請一些線索這光,還澄清如何解決它?我真的想在兩種情況下運行2.7.10,因爲現在當我安裝2.7.6的庫時,但是當我運行腳本時,它們運行2.7.10並且看不到這些庫。

感謝

喬恩

+2

你應該使用'which python',而不是'whereis'。 –

+0

謝謝,至少顯示正確的版本.. –

回答

4

不要使用whereis,該命令忽略你的PATH環境變量。從手冊頁:

whereis工具檢查標準二進制目錄爲指定的程序,打印出的任何所找到的路徑。

重點煤礦。

您有一個PATH環境變量,其中包含一個「非標準」二進制目錄。使用which尋找到python來自:

$ which python 

which給你當前的shell配置中使用的實際二進制:

which實用程序採用命令名稱的列表和搜索路徑對於每個可執行文件這些命令實際上已被調用。

你可以使用which -a找到該命令的所有可能的完成:

$ which -a python 

另見「whereis」 and 「which」 return different paths in Mac OS X的超級用戶。

演示:

$ PATH=/opt/homebrew/bin:$PATH whereis python 
/usr/bin/python 
$ PATH=/opt/homebrew/bin:$PATH which -a python 
/opt/homebrew/bin/python 
/usr/bin/python 

因此,即使PATH明確指着我的自制軟件目錄,whereis忽略它。 which找到它並首先列出它(-a參數使它尋找更多選項)。

+0

謝謝,這使得事情更清晰 –