python - macOS 终端忽略 /usr/local/bin 的 /etc/paths

python - macOS 终端忽略 /usr/local/bin 的 /etc/paths

我正在尝试在全新安装的 macOS High Sierra 上安装 Homebrew 和 Python。HomeBrew 已成功安装,python、pip 等也已安装到 /usr/local/bin 文件夹中,并且我之前已将 编辑为顶部/etc/paths有,但使用 时终端仍显示为 python 版本。我尝试重新启动终端和系统。/usr/local/bin/usr/bin/usr/binwhich python

在我重新安装操作系统之前,完全相同的设置运行良好。

/etc/paths看起来像这样

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

编辑:echo $PATH显示/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbinwhich python仍然显示/usr/bin/python

答案1

/etc/paths我们不建议也不需要修改系统路径(在)。

如果你已经通过 Homebrew (brew install pythonbrew install python3)安装了 Python,那么你应该仔细阅读以下注意事项:

brew info python
brew info python3

Homebrew 的处理为何python如此特殊?

查看Homebrew 和 Python文档,因为 Homebrew 在不同的地方创建了相当多的符号链接并使用以下约定:

Homebrew 为 Python 2.7.x 提供了一个版本,为 Python 3.x 提供了另一个版本。可执行文件的组织方式如下,以便 Python 2 和 Python 3 都可以无冲突地安装:

  • python指向macOS系统Python(无需手动PATH修改)
  • python2指向 Homebrew 的 Python 2.7.x (如果已安装)
  • python3指向 Homebrew 的 Python 3.x(如果已安装)
  • pip2指向 Homebrew 的 Python 2.7.x pip(如果已安装)
  • pip3指向 Homebrew 的 Python 3.x pip(如果已安装)

python这样做的原因是,如果 Homebrew Python 是作为其他公式的依赖项安装的,您不希望默认使用它,这可能会导致/usr/bin/env python在其 shebang 行中使用的脚本出现问题。

还请注意,由于 Python 2 的遗留特性,Homebrew/Python 的行为将来可能会发生变化。

但我想python指出 Homebrew 的python

因此,如果您确实想要引用pythonHomebrew 的 Python 2.7 而不是系统 Python,则应将其添加到您的$PATHin 中~/.bash_profile

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

... 并保持/etc/paths原样。

相关内容