brew install 的 Python 不会覆盖系统 python



我只是用brew在OS X上安装了Python 3。python3命令现在使用 brew Python 3.6 启动解释器,但python仍然使用默认系统 Python 2.7 打开解释器。

我的理解是,默认情况下,brew Python 现在应该覆盖系统 Python。 (即,参见 $PATH 中的/usr/bin 和/usr/local/bin 的顺序以及更多内容)。在我的 PATH 中,/usr/local/bin 排在/usr/bin 之前,所以它不应该是 PATH 问题。 我尝试重新启动终端,但没有效果。

这是我的完整路径,以防相关。

/Users/**/.rvm/gems/ruby-1.9.3-p362/bin:/Users/**/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/**/.rvm/rubies/ruby-1.9.3-p362/bin:/Users/**/.rvm/bin:/Users/**/.rvm/bin:/Users/**/Python/PmagPy/programs/conversion_scripts2/:/Users/**/Python/PmagPy/programs/conversion_scripts/:/Users/**/Python/PmagPy/programs:/usr/local/heroku/bin:./bin:/usr/local/sbin:/usr/local/bin:/usr/local/share/npm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin

为什么brew Python不优先? 我该如何修复(或排除故障)此问题? 如果我找不到其他选项,我可以创建一个别名,但我更愿意了解正在发生的事情并找到问题的根源。

更新:

我检查了"可能重复"的问题,但我的问题似乎不是链接问题:

~ brew link --overwrite --dry-run python
Warning: Already linked: /usr/local/Cellar/python/3.6.4_4
To relink: brew unlink python && brew link python
~ 

TL;DR将以下内容添加到您的.bash_profile(或等效项):

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

解释

似乎通过自制软件的python现在以不同的方式处理(见 https://docs.brew.sh/Homebrew-and-Python)。

  • python3指向Homebrew的Python 3.x(如果已安装)
  • python2指向Homebrew的Python 2.7.x(如果已安装)
  • python指向Homebrew的Python 2.7.x(如果已安装),否则指向macOS系统Python。如果您想添加brew info python请查看 Homebrew的3.x python到你的PATH。

查看您需要执行的操作brew info python提示:

指向的未版本化符号链接pythonpython-configpippython3python3-configpip3等分别是 安装到/usr/local/opt/python/libexec/bin 中

提示是,因此您必须在路径中/usr/bin之前添加/usr/local/opt/python/libexec/bin(而不是某些来源中所述的/usr/local/bin例如 https://docs.python-guide.org/starting/install3/osx/)

另请参阅 https://github.com/Homebrew/homebrew-core/issues/15746

让自制 python 工作的单行代码:

中兴

echo -n 'export PATH="/usr/local/opt/python/libexec/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc

砰砰��

echo -n 'export PATH="/usr/local/opt/python/libexec/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc

说明:
>> filename追加在文件
末尾source filename重新加载文件

我在如何链接家庭酿造的python版本并将其设置为默认值中尝试了一些建议的解决方案,但没有一个奏效。 最终,我通过符号链接 python3 --> python 解决了这个问题:

ln -s /usr/local/bin/python3 /usr/local/bin/python

最新更新