如何使用brew安装的Python作为默认Python?

sam*_*sam 169 python homebrew

我尝试在Mac OS X 10.6.2上切换到Homebrew(在使用fink和macport之后).我安装了python 2.7

brew install python 
Run Code Online (Sandbox Code Playgroud)

问题是,与Macport相反,似乎没有python_select实用程序,我的默认mac python总是默认的

which python
Run Code Online (Sandbox Code Playgroud)

给我吗

/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

/usr/bin/python不是一个符号链接

我怎样才能使python brew风格成为我的默认python?

Vis*_*hal 111

当您使用Homebrew时,以下命令可以提供更好的图片:

brew doctor
Run Code Online (Sandbox Code Playgroud)

输出:

==>/usr/bin发生在/ usr/local/bin之前这意味着将使用系统提供的程序而不是Homebrew提供的程序.如果您这样做,这是一个问题.brew安装了Python.

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

  • 对于High Sierra中的brew,只有`python2`位于/ usr/local/bin中,仅用于`python`; 在`〜/ .bash_profile`中设置`export PATH ="/ usr/local/opt/python/libexec/bin:$ PATH"` (5认同)
  • 对.把/ usr/local/bin放在路径上,你很高兴. (4认同)
  • 确保路径中没有/ user/local/bin TWICE.出于某种原因,在我的PATH中,它出现在/ usr/bin之前和之后,它让我发疯. (4认同)

Tru*_*an1 99

对于 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"
Run Code Online (Sandbox Code Playgroud)

结果:

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

2023 年更新

Brew python 再次更改了它的位置,并且必须将我的位置更新~/.zshrc为:

export PATH="$(brew --prefix)/opt/python@3/libexec/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

不再有.../opt/python/...令人烦恼的地方,因为现在我必须明确指定 v3,但至少比必须像评论中那样指定次要版本要好。

  • 看起来应该指定 python 版本:`/opt/homebrew/opt/python@3.10/libexec/bin/` (15认同)

aka*_*ppi 82

请参阅:如何在Homebrew中使用符号链接python?

$ brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.3... 28 symlinks created
$ which python
/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)

  • 为什么当我酿造安装python时不会发生这种情况? (10认同)
  • @BenWest因为python3,现在你得python2而不是python. (4认同)
  • 我没有启用它。 (2认同)
  • 就我而言,我需要在运行此命令后重新启动终端(如 [Martijn Courteaux 的回答](/sf/answers/2787996781/)所述) (2认同)
  • 这个链接 python@2 给我 (2认同)

Bij*_*jan 63

快速解决:

  1. 打开 /etc/paths
  2. 更改行的顺序(最高优先级)

在我的情况下/etc/paths看起来像:

/usr/local/bin
/usr/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin
Run Code Online (Sandbox Code Playgroud)

如果你想进一步了解OSX中的路径,我发现这篇文章非常有用:

http://muttsnutts.github.com/blog/2011/09/12/manage-path-on-mac-os-x-lion/

  • 这个问题是它为所有用户改变它:/,IMO最好更改更具体的东西. (6认同)
  • 谢谢您,以上所有答案确实解决了我的问题,但您的解决了!太感谢了! (2认同)

Sac*_*hot 42

我为OSX High Sierra做了"brew install python".该$PATH/usr/local/bin任何其他的路径之前,但仍然which python是指向系统的蟒蛇.

当我看得更深时,我发现没有python可执行文件/usr/local/bin.可执行文件已命名python2.要解决此问题,请创建python指向以下内容的符号链接python2:

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

  • 确认这解决了High Sierra的问题 (4认同)
  • 还需要重新启动终端才能申请 (3认同)
  • $ cd/usr/local/bin $ ln -s python3 python (3认同)

Pam*_*put 41

正如自制软件安装程序本身所建议的那样,请务必将其添加到您的.bashrc.zshrc:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

  • 对于 Apple Silicon/ARM 上的 MacOS,这将是:export PATH="/opt/homebrew/opt/python/libexec/bin:$PATH" (Homebrew 的默认位置不同) (12认同)
  • 这是High Sierra的正确方法.投票! (8认同)
  • 在我的机器(MacOS Ventura、Apple M1)上,它需要是: export PATH="/opt/homebrew/opt/python@3/libexec/bin:$PATH" 。 (4认同)
  • 除了这个之外,其他答案都不适合我!此处运行 macOS Catalina。谢谢! (2认同)

Ada*_*erg 23

Homebrew不会替换"/ usr/bin"中的内容.你只想在你的路径中将"/ usr/local/bin"放在"/ usr/bin"之前,然后"which python"会给你"/ usr/local/bin/python".

更换/ usr/bin/python(或/ usr/bin/ruby​​)是非常不推荐的.

  • 但事实并非如此! (2认同)

Pic*_*Boy 20

python公式现在使用python3(现在为v3.6.5),brew将链接目录:

/usr/local/opt/python -> ../Cellar/python/3.6.5
Run Code Online (Sandbox Code Playgroud)

它还会链接二进制文件:

/usr/local/bin/python3 -> ../Cellar/python/3.6.5/bin/python3
Run Code Online (Sandbox Code Playgroud)

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

brew install python@2
Run Code Online (Sandbox Code Playgroud)

要使用自制软件python,只需将其目录放在PATH中,用于bash:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

用于鱼类:

set -x PATH /usr/local/opt/python/libexec/bin $PATH
Run Code Online (Sandbox Code Playgroud)

注意:

  1. 这样做会影响系统的默认版本 python
  2. homebrew用于将python链接到/usr/local/share/python旧版本.


小智 12

修改$ PATH,在bashrc或bash_profile中添加:

export PATH=/usr/local/bin:/usr/local/sbin:~/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

更多点击此处: 问题#89791


Jos*_*del 10

您需要编辑PATH环境变量,以确保在/ usr/bin之前搜索自制python所在的位置.您还可以在shell配置中进行设置,以便将像PYTHON这样的变量设置为所需的python版本并调用$PYTHON而不是python从命令行调用.

另外,正如另一张海报所述(特别是在Mac上)请勿将/ usr/bin中的python与其他python安装指向它.如果你这样做,你只是在惹麻烦.


Mar*_*aux 9

我做了brew install python,我$PATH很好,但仍然which python给了我一个安装的系统.重启终端修复了它.

  • 重启终端不是必需的,请尝试`hash -r` (2认同)

Mik*_*bov 5

我相信有办法让自制的python默认,但在我看来,解决问题的正确方法是不要搞乱系统python路径:最好创建一个virtualenv,其中自制的python将是默认的(通过使用virtualenv - -python选项).使用像这样的工具python_select几乎总是一个坏主意.


pix*_* 67 5

python现在指向python3,如果需要,python 2请执行以下操作: brew install python@2然后在.zshrc 或.bashrc文件中, export PATH="/usr/local/opt/python@2/libexec/bin:$PATH" 现在pyhon --version= Python 2.7.14和python3 --version= Python 3.6.4。这就是我在终端中经常看到的行为。


Dmy*_*huk 5

/usr/local/opt/python/libexec/bin显式添加到您的.bash_profile

export PATH="/usr/local/opt/python/libexec/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

之后,它应该可以正常工作。


mpo*_*sot 5

使用 pyenv 来安装和切换 Python 版本。我已经使用 rbenv 多年了,它做同样的事情,但是对于 Ruby。在此之前,版本管理简直就是地狱。

请参阅pyenv 的 github 页面以获取安装说明。基本上是这样的: - 使用自制软件安装 pyenv。brew install pyenv - 在 shell 启动脚本的末尾添加一个函数,这样 pyenv 就可以发挥它的魔力。echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

  • 使用 pyenv 安装您需要的任意多个不同版本的 Python。pyenv install 3.7.7
  • 将默认(全局)版本设置为您刚刚安装的现代版本。pyenv global 3.7.7
  • 如果您从事的项目需要使用不同版本的 python,请查看pyevn local. 这会在项目文件夹中创建一个指定 python 版本的文件。Pyenv 将使用该文件中的版本覆盖全局 python 版本。