如何将通过brew安装的Python设置为默认Python?

292

我试图在Mac OS X 10.6.2上切换到Homebrew(之前使用fink和macport)。我已经安装了Python 2.7。

brew install python 
问题是与Macport相反,似乎没有python_select实用程序,我的默认Mac Python始终是默认值。
which python

给我

/usr/bin/python

而且 /usr/bin/python 不是符号链接

我该怎么做让 brew 版本的 python 成为我的默认 python?


25
Homebrew不再覆盖系统安装的Python。您可以执行以下操作:export PATH="/usr/local/opt/python/libexec/bin:$PATH"。来源:https://discourse.brew.sh/t/what-happened-to-the-standard-python-package/935 - George
3
我尝试了所有提到的答案,在我的 $PATH 中,/usr/local/bin 出现在 /usr/bin 之前。我试过使用 brew link 和 unlink,但是 brew doctor 没有报告 /usr/bin 在 /usr/local/bin 之前的问题。然而,当我输入 which python 命令时,输出的是 /usr/bin/python 而不是通过 brew 安装的 python 版本。 - Ujwal Ratra
1
请尝试使用Python2。 - Fraser
3
不建议再使用Homebrew Python进行本地项目开发。请参阅Homebrew Python Is Not For You - fn control option
如果您正在使用Python3,请尝试运行'which python3'。如果可以运行,则'python3 --version'和'pip3 --version'也应该可以运行。 - Anshad Razak
我遵循了fn控制选项的建议,只有这样一切才正常工作。asdf就是正确的选择!!! - undefined
25个回答

151

正如homebrew安装程序本身建议的那样,一定要将此添加到您的.bashrc.zshrc中:

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

19
在 High Sierra 上,这是正确的方法。点赞! - tormodatt
1
MacOS 默认使用 zsh 终端,因此需要更改的是 .zshrc 文件而不是 .bashrc 文件。 - user394430
2
除了这个之外,其他答案都对我没用!我在运行macOS Catalina。谢谢! - HumbleBee
11
对于搭载 Apple Silicon/ARM 的 MacOS,这将是:export PATH="/opt/homebrew/opt/python/libexec/bin:$PATH"(Homebrew 的默认位置不同)。 - pierrepinard_2
4
在我的电脑上(MacOS Ventura,Apple M1),需要这样设置:export PATH="/opt/homebrew/opt/python@3/libexec/bin:$PATH"。 - Adam Dingle
显示剩余4条评论

134

由于您正在使用Homebrew,因此以下命令可以提供更好的图像:

brew doctor

输出:

==> /usr/bin 出现在 /usr/local/bin 之前,这意味着系统提供的程序将被使用,而不是 Homebrew 提供的程序。如果你安装了 brew 的 Python,这就是个问题。

请考虑编辑您的 .bash_profile 文件,将 /usr/local/bin 放在 $PATH 中 /usr/bin 之前。


4
请确保你的路径中没有两次出现 /user/local/bin。由于某种原因,在我的 PATH 中,它出现在 /usr/bin 之前和之后,这让我感到非常烦恼。 - vinaut
1
许多程序在头部使用“/usr/bin/python”,使这不是一种可行的解决方案。 - michael.schuett
6
在 High Sierra 中,/usr/local/bin 目录下只有 python2。如果想要使用 python 命令,则需在 ~/.bash_profile 文件中添加以下语句:export PATH="/usr/local/opt/python/libexec/bin:$PATH"。请注意,翻译过程中需要保持原文意思不变,同时让语言更加通俗易懂。 - tormodatt

110

14
当我使用“brew install python”时为什么这种情况不会发生? - Ben West
4
由于Python3的缘故,现在你会得到Python2而不是Python。 - georgexsh
2
我没有启用它。 - theonlygusti
2
在我的情况下,在运行此命令后,我需要重新启动终端(如Martijn Courteaux的回答所指出的那样)。 - jkmartindale
2
这个链接对我来说是Python@2。 - Andrew B.
显示剩余2条评论

90

对于 Apple Silicon 机器,路径略有不同。在运行 brew install python 后,您必须确保您的 ~/.zshrc 使用正确的 Homebrew 路径:

# Homebrew
eval "$(/opt/homebrew/bin/brew shellenv)"

# Homebrew: Python
export PATH="/opt/homebrew/opt/python/libexec/bin:$PATH"

结果:

% which python
/opt/homebrew/opt/python/libexec/bin/python

% python --version
Python 3.9.9

% which pip
/opt/homebrew/opt/python/libexec/bin/pip

% pip -V
pip 21.3.1 from /opt/homebrew/lib/python3.9/site-packages/pip (python 3.9)

更新 2023

Brew Python 又一次更改了它的位置,我不得不更新我的 ~/.zshrc 文件为:

export PATH="$(brew --prefix)/opt/python@3/libexec/bin:$PATH"

现在没有 .../opt/python/... 了,这很烦人,因为现在我必须明确指定v3,但至少比在注释中指定次要版本要好。


13
看起来需要指定 Python 版本:/opt/homebrew/opt/python@3.10/libexec/bin/ - Alex Bender
1
谢谢 - 这对我的 M1 MacBook 有用(这里没有其他东西有效!) - Sam Dutton
1
这在 Mac M1 上是唯一有效的解决方案。谢谢! - seizethedata
这是针对ARM Mac的正确答案,非常感谢! - A. Steenbergen
对我来说很有效。谢谢! - Hamza Awan
注意 .../opt/python/... 已经回来了,不再需要使用 python@3 了。 - undefined

68

2
谢谢,所有以上的回答都解决了我的问题,但是你的解决了!非常感谢! - Sean
7
问题在于它会改变所有用户的体验:/ ,我认为更好的做法是针对性地进行修改。 - Randall Hunt
1
@RandallHunt 像什么和如何? - Mike Kormendy

49

我在OSX High Sierra上执行了"brew install python"。在任何其他路径之前,$PATH中都有/usr/local/bin,但是which python仍然指向系统的python。

当我进一步查找时,发现在/usr/local/bin中没有python可执行文件。该可执行文件命名为python2。要解决此问题,请创建一个象征性链接python指向python2

/usr/local/bin $: ln -s python2 python


4
确认此操作可以在High Sierra上解决问题。 - RandomDeduction
你是我的英雄。简直不敢相信我没有意识到这个解决方案! - Smokin Joe
3
需要重新启动终端才能应用。 - lexa-b
3
$ cd /usr/local/bin $ ln -s python3 python - Pnemonic
1
我想也需要将sym-link pip链接到pip3(或pip2)吧? - alexP_Keaton
使用 Python 3.9 在 Big Sur 上解决了我的问题。 - ibrahim

29

python 公式现在使用 python3(目前为v3.6.5版本),homebrew将链接该 目录

/usr/local/opt/python -> ../Cellar/python/3.6.5

它还将链接二进制文件

/usr/local/bin/python3 -> ../Cellar/python/3.6.5/bin/python3

如果您仍需要使用python2.x,请使用:

brew install python@2

要使用Homebrew提供的Python,只需将其目录加入到PATH中,在bash中:

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

对于鱼来说:

set -x PATH /usr/local/opt/python/libexec/bin $PATH

注意:

  1. 这样做会对系统默认版本的python进行覆盖。
  2. 在旧版本中,Homebrew曾将Python链接到/usr/local/share/python

这对我来说是个技巧。默认情况下,brew会在你的路径中安装python3,而不是一个名为python的可执行文件。具体地说,在我的路径中将/usr/local/opt/python/libeexec/bin放在其他目录之前可以解决问题。 - cam8001

24

Homebrew不会替换"/usr/bin"中的任何文件。您只需将"/usr/local/bin"放在"/usr/bin"之前即可,然后"which python"将给出"/usr/local/bin/python"。

强烈不建议替换"/usr/bin/python"(或"/usr/bin/ruby")。


2
但它并没有! - theonlygusti

16

修改你的$PATH,在你的bashrc或bash_profile中添加以下内容:

export PATH=/usr/local/bin:/usr/local/sbin:~/bin:$PATH

更多点击这里:Issue #89791


我的编辑器"PyCharm"一直在使用~/.bashrc文件,直到我找到了这个小技巧才成功让brew的Python工作。谢谢@Aben。 - JamesDeHart

15

我执行了brew install python,我的$PATH正确无误,但是which python仍然显示系统安装的版本。重新启动终端就解决了问题。


1
这就是我需要做的全部。虽然我不确定何时执行此操作,但它似乎只需要执行 brew install python,然后重新启动终端,而且没有其他需要brew unlink & brew link的操作吗? - Con Antonakos
在使用brew安装Python后,"which python"命令会给出正确的本地Python路径,但是"python"命令却指示它是调用系统安装的Python。重新启动终端可以解决这个问题。 - Michelle
2
重新启动终端不是必要的,尝试使用 hash -r 命令。 - georgexsh
我差点就要疯了,直到我看到这个。我已经执行了几次brew unlink & brew link。只需要重新启动终端就好了。 - Dominic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接