Mac上存在多个Python实例是何原因?如何确认当前使用版本并更新?
Mac多Python版本混乱问题解决方案
为什么会有多个Python实例
你设备上的Python来源通常分为以下几类,叠加安装后就会出现多实例混杂的情况:
- Mac系统自带的Python,存放在
/usr/bin路径下,供系统服务调用,你没有修改它的操作是完全正确的 - Xcode或Xcode命令行工具安装时附带的Python3
- 通过Homebrew安装的Python,对应你截图里
/opt/homebrew/opt路径下的文件 - Python官网pkg安装包安装的Python
- 部分第三方软件安装时自带的Python依赖,会写入
/usr/local/bin路径
确认当前调用的Python来源
执行以下命令即可输出当前终端默认调用的python3的绝对路径,直接判断来源:
which python3
- 输出以
/opt/homebrew/bin开头:为Homebrew安装的Python - 输出以
/Library/Frameworks/Python.framework开头:为Python官网pkg安装的版本 - 输出为
/usr/bin/python3:为系统或Xcode命令行工具自带的Python
版本更新不生效的核心原因
你从官网安装新版本后仅IDLE更新、终端调用仍为旧版本,本质是环境变量PATH的优先级问题:系统查找可执行文件时会按PATH里的路径顺序从上到下匹配,找到第一个符合的就调用,你新安装的Python的路径没有排在旧版本路径的前面,所以终端始终调用旧版本,而IDLE是直接绑定安装包对应的新版本路径,所以会正常更新。
具体解决方法
方案1:用Homebrew统一管理Python(推荐)
Homebrew会自动处理路径、版本更新,操作最简单:
- 执行命令更新Homebrew的Python版本:
brew update && brew upgrade python3 - 把Homebrew的执行路径加到PATH最优先级,Mac现在默认用zsh终端,执行以下命令写入配置:
echo 'export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"' >> ~/.zshrc - 执行
source ~/.zshrc让配置生效,之后再运行python3 --version就会显示Homebrew安装的最新版本。
方案2:用官网安装包版本
如果你倾向于使用官网的Python版本:
- 安装完官网最新的pkg安装包后,把对应版本的执行路径加到PATH最优先级,以3.9版本为例,执行:
echo 'export PATH="/Library/Frameworks/Python.framework/Versions/3.9/bin:$PATH"' >> ~/.zshrc - 执行
source ~/.zshrc生效即可。
方案3:多版本灵活管理
如果需要同时使用多个Python版本,避免路径混乱,可以用pyenv统一管理所有Python版本,支持全局、单个项目的版本一键切换,完全不会出现路径冲突问题。
注意:永远不要修改、删除
/usr/bin路径下的系统自带Python,大量系统底层服务依赖该版本,修改后可能导致系统功能异常。
内容的提问来源于stack exchange,提问作者SergioBoySV
相关产品推荐
相关产品推荐

