不管是新版macos还是旧版本的macos都可以使用macport这个包管理工具简单方便的在mac上面安装并存多个版本的python, 还可以利用port select --set python python3 来设置默认的python版本等.
port search查询可用python安装包
命令 port search --name --line --regex '^python(\d+)' 这里使用了正则来匹配可用的pyton安装包. 可见 port中的python安装包还是很全面的从python2.6到python3.12都有
bash
~ % port search --name --line --regex '^python\d+'
python2_select 0.1 sysutils Common files for selecting default Python 2 version
python3_select 0.1 sysutils Common files for selecting default Python 3 version
python3_select-38 0.1 sysutils Common files for selecting default Python 3 version
python3_select-39 0.1 sysutils Common files for selecting default Python 3 version
python3_select-310 0.1 sysutils Common files for selecting default Python 3 version
python3_select-311 0.1 sysutils Common files for selecting default Python 3 version
python3_select-312 0.1 sysutils Common files for selecting default Python 3 version
python3_select-313 0.1 sysutils Common files for selecting default Python 3 version
python26 2.6.9 lang An interpreted, object-oriented programming language
python27 2.7.18 lang An interpreted, object-oriented programming language
python27-bootstrap 2.7.18 lang An interpreted, object-oriented programming language
python32 3.2.6 lang An interpreted, object-oriented programming language
python33 3.3.7 lang An interpreted, object-oriented programming language
python34 3.4.10 lang An interpreted, object-oriented programming language
python35 3.5.10 lang An interpreted, object-oriented programming language
python36 3.6.15 lang An interpreted, object-oriented programming language
python37 3.7.17 lang An interpreted, object-oriented programming language
python38 3.8.19 lang An interpreted, object-oriented programming language
python39 3.9.19 lang An interpreted, object-oriented programming language
python310 3.10.14 lang An interpreted, object-oriented programming language
python311 3.11.9 lang An interpreted, object-oriented programming language
python312 3.12.5 lang An interpreted, object-oriented programming language
python312-devel 3.12.0rc3 lang Obsolete port, replaced by python312
python313-devel 3.13.0rc1 lang An interpreted, object-oriented programming language
使用port install 安装python
这里我们以安装python312为例说明安装方法. 安装命令: sudo port install python312
port这个安装还是非常快的, 不像brew 在安装的时候经常会访问github获取资源,这个port 相关的依赖基本上都是走的加速镜像,非常快就安装好了.
使用port select --set设置当前系统中的默认python版本
在安装完成后,我们就可以使用以下命令将当前系统中的默认python版本设置为我们指定的版本. 下面的命令执行完毕后我们在系统中使用 python 就是默认的 python312
bash
# 设置系统命令 python 的默认版本为 python312
sudo port select --set python python312
# 设置python3的默认命令为 python312
sudo port select --set python3 python312
这里的 port select --set xxx yyy 实际上就是由port来自动帮我们创建一个软连接, 连接的源为 yyy 目标为 xxx, 既 ln -s yyy xxx
验证一下
bash
# 先生效一下环境设置
source ~/.bash_profile
# 验证python版本
python --version
# Python 3.12.5