Mac安全地升級Python3,不會刪除Mac自帶的Python2.x,homebrew安裝新版本Python后,通過軟連接來設置python訪問的是python3。
Mac自帶的python是2.7.x,這個太老了在運行python命令時會提示建議用python3,下面介紹兩種方式安全地升級python3。
----------(相關知識拓展)
UNIX create a symbolic link command(創建軟連接)
To create a symbolic link, enter:
$ ln -s {/path/to/file-name} {link-name}
$ ln -s /shared/sales/data/file.txt sales.data.txt
$ vi sales.data.txt
$ ls -l sales.data.txt
----------
方法一:升級最新版系統后使用系統自帶的python3
升級到Mac 10.15后,安裝最新版的Xcode,系統中有Python3,只需要創建軟連接將/usr/local/bin/python指向系統的python3即可,其實/usr/bin/python3使用的是Xcode中的python(/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python)
wood@wutengfeideMacBook-Pro ~ % ln -s /usr/bin/python3 /usr/local/bin/python
wood@wutengfeideMacBook-Pro ~ % ln -s /usr/bin/pip3 /usr/local/bin/pip
wood@wutengfeideMacBook-Pro ~ % ls -al /usr/local/bin/pip
lrwxr-xr-x 1 wood admin 13 12 24 18:15 /usr/local/bin/pip -> /usr/bin/pip3
wood@wutengfeideMacBook-Pro ~ % ls -al /usr/local/bin/python
lrwxr-xr-x 1 wood admin 16 12 24 18:14 /usr/local/bin/python -> /usr/bin/python3
-------------------------------------------------------
方法二:通過homebrew安裝python3(參考The right and wrong way to set Python 3 as default on a Mac)
brew install python
brew upgrade python
wood@wutengfeideMacBook-Pro ~ % which python
/usr/local/bin/python
wood@wutengfeideMacBook-Pro ~ % which python3
/usr/local/bin/python3
wood@wutengfeideMacBook-Pro ~ % unlink /usr/local/bin/python
wood@wutengfeideMacBook-Pro ~ % ln -s /usr/local/bin/python3 /usr/local/bin/python
wood@wutengfeideMacBook-Pro ~ % which pip
/usr/local/bin/pip
wood@wutengfeideMacBook-Pro ~ % which pip3
/usr/local/bin/pip3
wood@wutengfeideMacBook-Pro ~ % unlink /usr/local/bin/pip
wood@wutengfeideMacBook-Pro ~ % ln -s /usr/local/bin/pip3 /usr/local/bin/pip
這種處理方式有問題,新打開Terminal無效,需要同時配置~/.bash_aliases 和~/.bash_profile
--------(相關知識拓展)
/usr/bin 下面的都是系統預裝的可執行程序,會隨着系統升級而改變。
/usr/local/bin 目錄是給用戶放置自己的可執行程序的地方,推薦放在這里,不會被系統升級而覆蓋同名文件。
如果兩個目錄下有相同的可執行程序,誰優先執行受到PATH環境變量的影響,比如我的一台服務器的PATH變量為。
wood@wutengfeideMacBook-Pro ~ % echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
可以看到 /usr/local/bin 是優先 /usr/bin 的,所以如果which python出現多個選項,則會受PATH的影響。