升级Mac自带的python

Python 3

Mac OSX作为一个为开发而生的电脑系统,其中也自带了2.7版本的Python,但是Python现在也早就更新到了3,下面就来升级一下吧。

去官网下载最新的Python安装包

官方下载地址,选择最新的版本进去后,会有Mac OSXWindows系统的一个文件列表,选择一个下载下来

下载文件

我选择的是3.5.2版本的,下载的是64位的Mac OSX系统的安装包。

安装下载下来的安装文件

安装后的文件目录如下:
/Library/Frameworks/Python.framework/Versions/3.5

移动安装的Python文件

打开终端,执行命令:
sudo mv /Library/Frameworks/Python.framework/Versions/3.5 /System/Library/Frameworks/Python.framework/Versions
macOS 10.12及以后可能会出现权限问题,这是因为苹果加入了一个安全相关的模式叫SIP,你需要disable一下,见百度知道
可以发现,现有版本的Python文件都是在/System/Library/Frameworks/Python.framework/Versions目录下。

改变Python安装目录的用户组

查看Python 2.7的用户组位wheel,执行以下命令:
sudo chown -R root:wheel /System/Library/Frameworks/Python.framework/Versions/3.5

修改Python当前安装目录的一些快捷方式

/System/Library/Frameworks/Python.framework/Versions/目录下有一个Current,这是一个目录符号链接,指向当前的Python版本。原来指向2.7的,现在指向我们安装的最新的。所以应先删除Current,然后重新建立Current符号链接,命令如下:

删除连接:sudo rm /System/Library/Frameworks/Python.framework/Versions/Current
建立连接:sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5 /System/Library/Frameworks/Python.framework/Versions/Current

删除旧的命令符号链接

/usr/bin目录下有4个python命令的符号链接,使用下面的命令先删除,如果没有的话可以不用管
sudo rm /usr/bin/pydoc
sudo rm /usr/bin/python
sudo rm /usr/bin/pythonw
sudo rm /usr/bin/python-config

重新建立新的命令符号链接

将上一步删除的符号链接重新使用下面命令建立,如果没有可以不管,它们都指向Python3.5。
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/pydoc3.5 /usr/bin/pydoc
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /usr/bin/python
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/pythonw3.5 /usr/bin/pythonw
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5m-config /usr/bin/python-config

更新/root/.bash_profile文件中的路径

在终端输入以下命令
vim ~/.bash_profile

.bash_profile插入下面的内容即可

1
2
3
4
# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
PATH="/System/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
export PATH

现在重新启动一下Console,然后执行python --version,得到的就是Python 3.5.2。如果在程序中,需要使用下面代码获取python版本

1
2
import platform
print(platform.python_version())

现在可以使用最新的Python3.5.2了。