我的環境設定發生了非常錯誤的情況。在我嘗試學習的過程中,我決定在我的 Macbook Pro 上重新安裝 Mac OSX El Capitan,並開始從頭開始安裝和設定內容。我使用的 Shell 是 ZSH,我已經使用 Oh-My-ZShell 對它進行了一些配置。
我的 $PATH 和 Python:
~ ❯ echo $PATH
/Users/edchigliak/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/edchigliak/bin
~ ❯ python --version
Python 2.7.10
~ ❯
下面的螢幕截圖清楚地顯示了安裝了兩個 Python2/usr/bin
和一個 Homebrew Python3 /usr/local/bin
。
這是結果printenv
(僅與 PATH 和 SHELL 相關的條目):
PATH=/Users/edchigliak/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/edchigliak/bin
PWD=/Users/edchigliak
SHELL=/usr/local/bin/zsh
SHLVL=2
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.lRGo5iu4NA/Listeners
TERM=screen-256color
ZSH=/Users/edchigliak/.oh-my-zsh
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
_=/usr/bin/printenv
我的第一個條目.zshrc
:
export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin
非常感謝!
答案1
當您在 shell 提示字元下python
鍵入時,只會考慮完全命名的二進位。python
如果您想python
執行python3
,完成此操作的簡單方法是在您的個人 shell 啟動檔案中設定一個函數或別名。
你絕對不能python
指向系統範圍,因為這會破壞一些需要Python版本2的作業系統python3
和第三方工具。python
為了回顧這裡發生的情況,當您command
在提示下鍵入時,shell 會遍歷您的目錄PATH
並查找command
每個目錄中精確命名的可執行文件,直到找到一個,或者耗盡了可查找的位置。它會簡單地忽略任何具有其他名稱的文件,即使它們碰巧相似,例如xcommand
or commandante
or command3.xx
。如果您有別名或函數,則會使用它,儘管PATH
隨後可能會諮詢您以找到由您的別名或函數呼叫的其他命令。
答案2
shell 在 PATH 中搜尋精確匹配。當您輸入時python
,它會嘗試尋找匹配的可執行檔^python$
;^python...$
不一樣。
在你的情況下,可能是 /usr/local/bin 中沒有 python 或它有權限問題,這會導致它被跳過。
1 )如果沒有python
:/usr/local/bin
您可以用來sudo ln -s /usr/local/bin/python3.6 /usr/local/bin/python
建立一個python
指向您要使用的 Python 解釋器的軟連結。因為首先在 /usr/local/bin 中搜尋 PATH,所以 shell 現在應該找到此連結。
2)如果文件存在/usr/local/bin
但不存在執行允許,嘗試一下sudo chmod a+x /usr/local/bin/python
。
目前想不出其他問題。