如何将通过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个回答

10

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

另外,如另一个帖子所述(尤其是在mac上),请勿更改/usr/bin中的python以指向其他python安装。如果这样做,您只会自找麻烦。


7

Python现在指的是Python 3,如果你需要Python 2,则需要执行以下命令:brew install python@2,然后在你的.zshrc或.bashrc文件中添加以下内容:export PATH="/usr/local/opt/python@2/libexec/bin:$PATH"。 现在,python --version = Python 2.7.14,python3 --version = Python 3.6.4。这就是我在终端中看到的行为。


6

我认为有办法将自制的Python设置为默认值,但是我个人认为,解决问题的正确方法不是修改系统Python路径,而是在virtualenv中创建一个默认使用homebrew Python的虚拟环境(通过使用virtualenv --python选项)。几乎总是不推荐使用像python_select这样的工具。


5
使用pyenv来安装和切换Python版本。我已经使用rbenv多年了,它可以做同样的事情,但是针对Ruby。在那之前,管理各个版本很麻烦。 请参考pyenv的github页面进行安装。基本上就像这样: - 使用homebrew安装 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,请尝试使用 pyenv local。这将在项目文件夹中创建一个指定 Python 版本的文件。Pyenv 将使用该文件中的版本覆盖全局 Python 版本。

5
/usr/local/opt/python/libexec/bin 明确添加到你的 .bash_profile 文件中:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"

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


2

Just do:

brew install python
brew link python

在完成上述操作后,请将以下内容添加到您的bashrc或bash_profile文件中:
alias python='/usr/local/bin/python2'

享受吧!


听起来你遇到了我遇到的同样的问题。即使在这里的答案中使用link命令,在/usr/local/bin中创建的所有链接都是针对python2而不是python。使用别名来解决这个问题似乎不是一个好主意,但我还没有找到更好的方法。 - Patrick M
我并没有使用别名,而是直接复制了它 cp /usr/local/bin/python2 /usr/local/bin/python,看起来效果不错。这是更加丑陋的解决方法吗? - kingb12

1

试一试

which python3

尝试输入python3而不是仅输入python

1
问题出现在一些脚本尝试使用 python 命令时,因此你不能简单地在所有地方将 python 替换为 python3 - Anton Chikin

1
如果你使用的是fish shell
echo 'set -g fish_user_paths "/usr/local/opt/python/libexec/bin" $fish_user_paths' >> ~/.config/fish/config.fish

1
您可以编辑 /etc/paths。这是我的文件内容:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

然后为Python版本添加符号链接。在我的情况下

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

Voila!

1

大家好!我需要使用 Python 3.10 版本来利用其新功能。我的解决方案是在2022年7月3日,如下所示。祝愉快编写 Python 代码!

» rm '/usr/local/bin/pip3.10'
» brew link python@3.10
» echo 'export PATH="/usr/local/opt/python@3.10/bin:$PATH"' >> ~/.zshrc
» python3
Python 3.10.5 (main, Jun 23 2022, 17:15:25) [Clang 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

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