233

我尝试在 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不是符号链接

如何使 python brew 风味成为我的默认 python?

4

22 回答 22

126

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

brew doctor

输出:

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

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

于 2011-09-11T00:37:01.963 回答
104

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

export PATH="/usr/local/opt/python/libexec/bin:$PATH"
于 2018-01-04T18:19:58.687 回答
97

请参阅:如何在 Homebrew 中对 python 进行符号链接?

$ brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.3... 28 symlinks created
$ which python
/usr/local/bin/python
于 2013-02-01T11:35:24.510 回答
66

快速解决:

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

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

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

如果您想了解更多有关 OSX 中路径的信息,我发现这篇文章非常有用:

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

于 2012-03-22T11:04:59.233 回答
47

我为 OSX High Sierra 做了“brew install python”。在任何其他路径之前,但仍然$PATH指向系统的python。/usr/local/binwhich python

当我深入研究时,我发现/usr/local/bin. 可执行文件名为python2. 要解决此问题,请创建一个python指向的符号链接python2

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

于 2018-01-18T04:52:57.517 回答
29

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

/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

要使用自制软件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. 自制软件用于将 python 链接到/usr/local/share/python旧版本。
于 2018-04-03T13:15:46.567 回答
24

Homebrew 不会替换“/usr/bin”中的内容。您只需在路径中将“/usr/local/bin”放在“/usr/bin”之前,然后“which python”将为您提供“/usr/local/bin/python”。

非常不推荐替换 /usr/bin/python(或 /usr/bin/ruby)。

于 2011-03-01T17:08:50.810 回答
15

修改您的 $PATH,将其添加到您的 bashrc 或 bash_profile 中:

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

更多点击这里: 问题#89791

于 2012-04-01T10:59:15.740 回答
14

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

于 2016-10-03T09:34:38.747 回答
10

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

此外,正如另一张海报所述(尤其是在 Mac 上),请勿将 /usr/bin 中的 python 弄乱,以将其指向另一个 python 安装。如果你这样做,你只是在自找麻烦。

于 2011-03-01T17:03:57.487 回答
7

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。这是我习惯在终端中看到的行为。

于 2018-03-05T16:53:05.963 回答
6

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

于 2012-11-13T15:55:04.943 回答
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 版本。
于 2020-04-23T21:30:11.677 回答
4

对于 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)
于 2022-01-12T14:20:40.527 回答
3

/usr/local/opt/python/libexec/bin明确添加到您的.bash_profile

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

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

于 2019-08-16T09:01:22.463 回答
1

如果你是鱼壳

echo 'set -g fish_user_paths "/usr/local/opt/python/libexec/bin" $fish_user_paths' >> ~/.config/fish/config.fish
于 2020-02-20T02:58:03.103 回答
1

做就是了:

brew install python
brew link python

之后,将其添加到您的 bashrc 或 bash_profile:

alias python='/usr/local/bin/python2'

享受!

于 2017-12-03T08:05:54.590 回答
1

您可以编辑 /etc/paths。这是我的:

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

然后为 python 版本添加符号链接。就我而言

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

瞧!

于 2019-02-13T15:52:28.770 回答
0

由于 High Sierra,您需要使用:

sudo chown -R $(whoami) $(brew --prefix)/*

这是因为/usr/local不能再被 chowned

于 2019-02-28T00:36:47.190 回答
0
brew link python

您必须为 python 创建/添加一个别名并将其放入您的 .zprofile(如果您按 Shift+command+,则位于用户/用户名文件夹中。

这必须指向您的自制 python 安装位置。

alias python ='opt/homebrew/bin/python3'
于 2021-11-20T17:55:35.280 回答
0

尝试这个

which python3

尝试打字python3而不是仅仅python

于 2022-03-01T12:54:43.553 回答
-9

不知道默认 Python 是什么意思。我认为用不同版本替换系统 Python 解释器是不好的做法。系统功能可能以某种方式取决于系统 Python 和特定模块或特定 Python 版本。而是将您的自定义 Python 安装安装在一个安全的不同位置,并根据需要调整您的 $PATH,以便通过路径查找调用的 Python,而不是寻找默认的 Python。

于 2011-03-01T17:02:59.433 回答