傳回了錯誤的 Python 版本,在 ZSH 中設定了正確的 $PATH

傳回了錯誤的 Python 版本,在 ZSH 中設定了正確的 $PATH

我的環境設定發生了非常錯誤的情況。在我嘗試學習的過程中,我決定在我的 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

Python2 與 Python3 路徑的終端截圖

這是結果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每個目錄中精確命名的可執行文件,直到找到一個,或者耗盡了可查找的位置。它會簡單地忽略任何具有其他名稱的文件,即使它們碰巧相似,例如xcommandor commandanteor 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

目前想不出其他問題。

相關內容