MacOS High Sierra下Homebrew安装的Python3未被优先识别及虚拟环境问题
我之前在High Sierra上折腾Python环境时也遇到过一模一样的坑,咱们一步步来搞定它:
1. 先搞清楚当前用的是哪个Shell
MacOS High Sierra默认可能用bash,也可能已经切换到zsh了,不同Shell加载的配置文件不一样,这是很多人踩坑的点。运行下面的命令确认:
echo $SHELL
- 如果输出是
/bin/bash:咱们继续用~/.profile或者检查是否有~/.bash_profile(bash优先加载这个) - 如果输出是
/bin/zsh:得修改~/.zshrc而不是~/.profile
2. 确保PATH配置正确并立即生效
不管用哪个Shell,把Homebrew的目录放到PATH最顶端,这样系统会优先找Homebrew的工具。打开对应的配置文件(比如~/.zshrc或者~/.profile),在末尾添加:
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
添加完别直接关终端,必须让配置生效:
- bash用户:
source ~/.profile(如果用了~/.bash_profile就source这个) - zsh用户:
source ~/.zshrc
3. 修复Python的软链接优先级
Homebrew安装Python3后,应该会自动在/usr/local/bin创建python指向python3的软链接,但有时候可能没生效或者被系统默认的Python覆盖了。运行下面的命令强制重新链接:
brew link --overwrite python3
现在再验证版本:
python --version
正常应该显示Python 3.x的版本了,如果还是2.7,先检查brew info python3确认Python3确实安装成功了。
4. 用Python3的pip重新安装pipenv
之前你用pip install --user pipenv装到Python2.7目录,是因为当时系统默认的pip属于Python2。现在确保用Python3的pip来装:
pip3 install --user pipenv
装完后检查pipenv的路径:
which pipenv
如果它的路径是/Users/charliesneath/Library/Python/3.x/bin/pipenv(x是你的Python3版本号),可以把这个目录也加到PATH里(在配置文件里再加一行),避免后续警告:
export PATH="$HOME/Library/Python/3.7/bin:$PATH"
(记得把3.7换成你实际的Python3版本,比如python3 --version显示的版本号)
额外小提示:检查Shell配置加载顺序
如果用bash的话,有时候系统会优先加载~/.bash_profile而不是~/.profile,如果你的~/.bash_profile存在,要么把PATH配置移到这个文件里,要么在~/.bash_profile里加一行source ~/.profile,让它加载你之前写的配置。
这样折腾完,系统应该就会优先用Homebrew装的Python3了~
内容的提问来源于stack exchange,提问作者charliesneath

