brew-installed Python不会覆盖系统python

J J*_*nes 5 python macos homebrew path

我刚刚使用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问题.我试过重启终端,没有任何效果.

如果相关,这是我的完整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
Run Code Online (Sandbox Code Playgroud)

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

更新:

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

 ~ 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
 ~ 
Run Code Online (Sandbox Code Playgroud)

Cla*_*ney 17

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

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

说明

看来,通过自制的蟒蛇现在处理方式不同(见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你需要做什么的提示:

未版本控制的符号链接python,python-config,pip等指向 python3,python3-config,pip3等,已经分别安装在/ usr /本地的/ opt /蟒蛇/ libexec目录/箱

该提示是因此,你必须添加/usr/local/opt/python/libexec/bin之前,/usr/bin在你的路径(不是/usr/local/bin如某些人士如说https://docs.python-guide.org/starting/install3/osx/)

另见https://github.com/Homebrew/homebrew-core/issues/15746

  • 花了一个小时弄乱它,终于做到了!谢谢!!! (2认同)

Flo*_*ues 5

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

桀骜

echo -n 'export PATH="/usr/local/opt/python/libexec/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

巴什

echo -n 'export PATH="/usr/local/opt/python/libexec/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

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