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

mac os python 升级 mac自带python升级_Python

 

 

 

--------(相关知识拓展)

/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的影响。