如何使用 brew 安装的 Python 作为默认 Python?
- 2025-03-12 08:50:00
- admin 原创
- 93
问题描述:
我尝试在 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 flavor 成为我的默认 python?
解决方案 1:
根据 homebrew 安装程序本身的建议,请确保将其添加到您的.bashrc
或.zshrc
:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
解决方案 2:
由于您使用 Homebrew,以下命令可以提供更好的图像:
brew doctor
输出:
==> /usr/bin 出现在 /usr/local/bin 之前 这意味着将使用系统提供的程序而不是 Homebrew 提供的程序。如果您安装了 Python,则会出现问题。
考虑编辑你的.bash_profile 以将:/usr/local/bin 放在你的 $PATH 中的 /usr/bin 之前。
解决方案 3:
对于 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,但至少比在评论中指定次要版本要好。
解决方案 4:
请参阅:如何在 Homebrew 中符号链接 python?
$ brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.3... 28 symlinks created
$ which python
/usr/local/bin/python
解决方案 5:
快速修复:
打开
/etc/paths
更改行的顺序(最高优先级放在最上面)
就我的情况/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/
解决方案 6:
我为 OSX High Sierra 执行了“brew install python”。它之前$PATH
有/usr/local/bin
任何其他路径,但仍然which python
指向系统的 python。
当我深入研究时,我发现没有 python 可执行文件/usr/local/bin
。可执行文件名为。要解决此问题,请创建指向的python2
符号链接:python
`python2`
/usr/local/bin $: ln -s python2 python
解决方案 7:
python
formula 现在使用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
要使用 homebrew 的python
,只需将其目录放入 PATH 中,对于 bash 来说:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
对于鱼类:
set -x PATH /usr/local/opt/python/libexec/bin $PATH
笔记:
这样做会隐藏系统默认版本的
python
homebrew 用于
/usr/local/share/python
在旧版本中链接 python。
解决方案 8:
Homebrew 不会替换“/usr/bin”中的内容。您只需要在路径中将“/usr/local/bin”放在“/usr/bin”前面,然后“which python”将为您提供“/usr/local/bin/python”。
强烈不建议替换 /usr/bin/python (或 /usr/bin/ruby)。
解决方案 9:
修改你的 $PATH,在你的 bashrc 或 bash_profile 中添加:
export PATH=/usr/local/bin:/usr/local/sbin:~/bin:$PATH
更多内容请点击这里:
问题 #89791
解决方案 10:
我照做了brew install python
,我的$PATH
很好,但还是which python
给了我系统安装的。重新启动终端解决了这个问题。
解决方案 11:
您需要编辑 PATH 环境变量,以确保在 /usr/bin 之前搜索自制 Python 所在的位置。您还可以在 shell 配置中进行设置,将 PYTHON 等变量设置为所需的 Python 版本,然后调用,$PYTHON
而不是python
从命令行调用。
此外,正如另一位发帖者所说(尤其是在 Mac 上),不要弄乱 /usr/bin 中的 python 以将其指向另一个 python 安装。如果你这样做,你只会自找麻烦。
解决方案 12:
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。这是我习惯在终端中看到的行为。
解决方案 13:
我相信有办法让自制 Python 成为默认设置,但我认为解决问题的正确方法不是弄乱系统 Python 路径:最好创建一个虚拟环境,其中自制 Python 将成为默认设置(通过使用 virtualenv --python 选项)。使用类似的工具python_select
几乎总是一个坏主意。
解决方案 14:
明确添加/usr/local/opt/python/libexec/bin
到您的.bash_profile
:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
此后,它就应该可以正常工作。
解决方案 15:
使用 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
eval "$(pyenv init -)"
fi' >> ~/.bash_profile`
使用 pyenv 安装您需要的任意数量的不同版本的 Python
pyenv install 3.7.7
。将默认(全局)版本设置为您刚刚安装的现代版本
pyenv global 3.7.7
。如果您正在处理需要使用不同版本 Python 的项目,请查看
pyevn local
。这会在项目文件夹中创建一个指定 Python 版本的文件。Pyenv 将使用该文件中的版本覆盖全局 Python 版本。
解决方案 16:
在 Mac OS X 上,如果您通过 Homebrew 安装了 Python3 brew install python3
,那么您需要通过终端运行以下命令:
export PATH="/usr/local/opt/python@3.11/libexec/bin:$PATH"
这是最新的 Python 版本 3.11。请确保编辑命令以与您的 Python 版本相对应。
解决方案 17:
只要这样做:
brew install python
brew link python
完成后,将其添加到您的 bashrc 或 bash_profile:
alias python='/usr/local/bin/python2'
享受!
解决方案 18:
试试这个
which python3
尝试输入python3
而不是仅仅python
解决方案 19:
您可以编辑 /etc/paths。这是我的:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
然后添加 python 版本的符号链接。在我的例子中
$ cd /usr/local/bin
$ ln -s python3 python
瞧!
解决方案 20:
如果你是鱼壳
echo 'set -g fish_user_paths "/usr/local/opt/python/libexec/bin" $fish_user_paths' >> ~/.config/fish/config.fish
解决方案 21:
大家好!我需要使用 Python 3.10 版本来利用其新功能。我在 2022-07-03 的解决方案如下。祝您 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.
解决方案 22:
将其添加到您的 PATH 变量中.bashrc
或.zshrc
export PATH=$(brew --prefix python)/libexec/bin:$PATH
这将确保当你更新 Python 时,它也会被更新
解决方案 23:
所以我也遇到了这个问题,花了点时间,但我终于搞明白了。我不得不使用 which python 来找出 python 的安装位置,结果发现我是用 homebrew 安装的,pip 在 Frameworks 目录下
which pip
/Library/Frameworks/Python.framework/Versions/3.12/bin/pip
因此,我也安装了 pip 和 homebrew,并尝试再次安装它,并得到以下结果
pip install pandas
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
xyz, where xyz is the package you are trying to
install.
If you wish to install a non-brew-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.
If you wish to install a non-brew packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
因此我按照它的建议在我的项目所在的目录中创建了一个虚拟环境。
python3 -m venv ./
之后我仍然无法得到它,pip 一直给我同样的错误,直到我像这样运行它:
./bin/pip install pandas
并且成功了...所以我现在运行
./bin/python3 filename.py
我不再收到错误。关键在于找到您实际使用的 Python 的位置,并使用它来运行您的脚本。
我希望这对某些人有帮助!
解决方案 24:
从 High Sierra 开始,您需要使用:
sudo chown -R $(whoami) $(brew --prefix)/*
这是因为/usr/local
不能再被 chowned
解决方案 25:
brew link python
并且您必须为 python 创建/添加一个别名并将其放在您的 .zprofile 中(位于 Users/username 文件夹中,如果您按下 Shift+command+.
这必须指向你的自制 Python 安装位置。
alias python ='opt/homebrew/bin/python3'
解决方案 26:
好吧,如果有人需要我需要的东西,比如只是想玩一下 Python,你也可以从终端调用它
python3 my_python_file.py
考虑到已经安装了 python 3.x,当然,在我的情况下使用 brew。
解决方案 27:
只需将 brew 的 Python 目录添加到PATH
环境变量中,不要对路径进行硬编码,而是直接从 brew 获取它,这样当它发生变化时它不会中断:
export PATH="$(brew --prefix python@3)/libexec/bin:$PATH"
扫码咨询,免费领取项目管理大礼包!