升級mac上的python從2.7到3.7


1、前言

Mac系統自帶python2.7,本文目的是將自帶的python升級到3.7版本。 

網上有本多的做法是讓python2.7和python3.X兩個版本共存,博主並不知道,是兩版本共存好,還是直接升級好,所以讀者要慎重選擇方法。

 

 

2. 關閉Rootless機制

由於Mac下的python2.7 默認是安裝在/System目錄下的。但是~~~Mac有個Rootless機制,默認不允許直接在/System下作修改。所以要先關閉Rootless機制。

—— 關閉Rootless機制的方法: 
1)重啟電腦, 重啟過程中按住command+R, 進入恢復模式 
2)打開terminal(也就是終端),鍵入: csrutil disable 
3)重啟電腦

——如果之后要再開啟Rootless機制,方法如下: 
1)重啟電腦, 重啟過程中按住command+R, 進入恢復模式 
2)打開terminal,鍵入: csrutil enable 
3)重啟電腦

——沒有關閉的時候,一下目錄無法寫和執行:

/System
/bin
/sbin
/usr (except /usr/local)

 

 

3. 下載安裝python3.7並安裝。

從官網https://www.python.org/downloads/下載pkg版本,並安裝。安裝選默認路徑,會安裝到/Library/Frameworks/Python.framework/Versions/目錄下

 

4. 刪除python2.7 - 此步驟不需要,否則無法啟動xcode

sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7

——如果您是iOS開發者,請不要升級python,因為Xcode使用的2.7的腳本,不支持3以上版本!!!

 

5、移動Python3.7到system的python目錄下:

sudo mv /Library/Frameworks/Python.framework/Versions/3.7 /System/Library/Frameworks/Python.framework/Versions/3.7

———— 原先/System/Library/Frameworks/Python.framework/Versions這個目錄下已經有了2.3、2.5、2.6、2.7版本了。現在只是把3.7版本再移動進去

————如果沒有第二部步關閉rootless,則移動的時候,因為要移動到System目錄下,是不會被允許的。

 

6. 修改文件所屬的Group

設置Group為wheel,原來系統自帶的就是這樣的。

sudo chown -R root:wheel /System/Library/Frameworks/Python.framework/Versions/3.7

——使用ls -l,就可以直接看到文件/目錄的所屬用戶和所屬群組

 

在Versions的目錄里有一個Current的link,是指向當前的Python版本,原始是指向系統自帶的Python2.7,我們把它刪除后,link就失效了,所以需要重新鏈一下。

sudo rm /System/Library/Frameworks/Python.framework/Versions/Current
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.6 /System/Library/Frameworks/Python.framework/Versions/Current

————注意,我們第4步並沒有刪除2.7,但是仍然刪除了目前的,並重新link到了3.7的版本

 

8、重新鏈接可執行文件

1) 先把系統原來的執行文件刪掉

sudo rm /usr/bin/pydoc
sudo rm /usr/bin/python
sudo rm /usr/bin/pythonw
sudo rm /usr/bin/python-config

2) 建立新的鏈接

sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.7/bin/pydoc3.7 /usr/bin/pydoc
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 /usr/bin/python
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.7/bin/pythonw3.7 /usr/bin/pythonw
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7m-config /usr/bin/python-config

 

 

9. 更新.bash_profile文件

默認的bash_profile里python的bin是指向/Library/Frameworks/Python.framework/Versions/3.7/bin的。要改到/System/目錄下

// 1、vim打開~/.bash_profile
vim ~/.bash_profile

// 2、修改PATH的路徑 - 其實只是少了個/System
# Setting PATH for Python 3.6

# The orginal version is saved in .bash_profile.pysave
PATH="/System/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
export PATH

——原來的路徑是安裝的默認路徑。

 

10. 卸載pkg安裝的python3.7 - 待處理

這一步不做,在使用pip3命令時還是要出錯的(它默認連接到/Library/目錄下照pip3命令,但是實際上應該到/System/Library/目錄下找)。博主掉這個坑好久。

我用的是CleanMyMac這個軟件來卸載原來pkg安裝的python3.7,安裝進來的兩個軟件都卸載。

鏈接pip到相應的位置:

sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.7/bin/pip3.7 /usr/bin/pip

——請注意,此時pip3鏈接到了/usr/bin/pip,所以你執行pip命令的時候,實際上執行的是System/...下的pip3.7,但是此時的/usr/pip默認指向的目錄是:

Library/Frameworks/Python.framework/Versions/3.7/bin/pip3.7,也就是安裝時候的目錄。

所以你需要手動修改成System下的目錄:

// 1、vim打開
sudo vim /usr/bin/pip      
// 修改第一行,把它改成正確的路徑即可。原路徑為安裝路徑,沒有System,正確路徑如下:
#!/System/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7

 

 

11. 測試

 在命令行中,用pip -V和pip3 -V查看版本和位置。用python -V查看版本和位置

 

 

————好了,python更新完畢。謝謝。 

 

 

 

 

 

 

 

 

——————占位符


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM