brew安装Python 3后未覆盖OS X系统Python 2.7的技术咨询
解决brew安装Python3后
python仍指向系统Python2的问题 嘿,我完全懂你遇到的这个困惑——本来以为brew装完Python3后会自动替换系统的python命令,结果发现python3能用但python还是老的2.7版本,而且PATH优先级也没问题对吧?其实这是brew的有意设计,避免破坏系统依赖Python2的工具,下面给你几个实用的解决办法:
方法1:设置Shell别名(简单快捷)
这是最省心的临时或永久切换方式:
- 临时生效:在当前终端输入
alias python='python3',立刻就能让python指向Python3,但重启终端后会失效。 - 永久生效:编辑你的Shell配置文件(OS X现在默认是zsh,对应
~/.zshrc;如果是bash则是~/.bash_profile),在文件末尾添加一行:
保存后执行alias python='python3'source ~/.zshrc(对应你的配置文件),或者直接重启终端,以后python就默认调用Python3了。
方法2:手动创建符号链接(直接替换)
如果你确定不需要系统Python2的默认python调用,可以手动在/usr/local/bin下创建指向Python3的符号链接:
sudo ln -s /usr/local/bin/python3 /usr/local/bin/python
因为你的PATH里/usr/local/bin排在/usr/bin前面,所以系统会优先找到这个新的python命令。不过要注意:这种方式可能会影响部分依赖系统Python2的系统工具,操作前最好确认自己的使用场景。
方法3:用pyenv管理Python版本(推荐长期方案)
如果需要经常切换不同Python版本,pyenv是更灵活的选择,能完美隔离系统Python和自定义版本:
- 先安装pyenv:
brew install pyenv - 配置Shell环境,以zsh为例,编辑
~/.zshrc添加以下内容:export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" - 重启终端后,安装你需要的Python3.6版本:
(版本号可以根据brew提供的具体版本调整)pyenv install 3.6.15 - 设置全局默认Python版本:
这样不管哪个终端窗口,pyenv global 3.6.15python都会指向你设置的Python3.6,而且完全不会影响系统自带的Python2。
为什么PATH没问题但还是没生效?
其实brew安装Python3时,只会在/usr/local/bin下生成python3、pip3这类带版本号的命令,不会自动创建python的链接——这是为了防止误替换系统python命令,导致那些依赖Python2的系统脚本(比如部分OS X自带工具)出错。所以即使你的PATH优先级正确,系统在/usr/local/bin找不到python时,就会去/usr/bin找系统的Python2.7了。
内容的提问来源于stack exchange,提问作者J Jones
相关产品推荐
相关产品推荐

