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

我尝试在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酿造风味成为我的默认python ?

270935 次浏览

不知道你说的默认Python是什么意思。我认为用不同的版本替换系统Python解释器是不好的做法。系统功能五月在某种程度上依赖于系统Python和特定模块或特定的Python版本。相反,将您的自定义Python安装安装在一个安全的不同地方,并根据需要调整您的$PATH,以便通过路径查找调用 Python,而不是寻找默认的Python。

您需要编辑您的PATH环境变量,以确保在/usr/bin之前搜索自制python所在的位置。你也可以在你的shell配置中设置一些东西,让像PYTHON这样的变量被设置为你想要的PYTHON版本,并从命令行调用$PYTHON而不是python

另外,正如另一个帖子所述(特别是在mac上),不要混淆/usr/bin中的python,将其指向另一个python安装。你这样做是在自找麻烦。

Homebrew不会替换“/usr/bin”中的内容。你只需要把“/usr/local/bin”放在“/usr/bin”之前,然后“哪个python”会给你“/usr/local/bin/python”。

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

当你在使用Homebrew时,下面的命令会给你一个更好的画面:

brew doctor

输出:

==> /usr/bin出现在/usr/local/bin之前这意味着系统提供的程序将被使用,而不是由 家酿。这是一个问题,如果你。

. brew安装Python 考虑编辑你的.bash_profile,把:/usr/local/bin放在前面

. /usr/bin

快速修复:

  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/

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

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

更多点击这里: 问题# 89791 < / p >

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

看:如何在Homebrew符号链接python ?

$ brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.3... 28 symlinks created
$ which python
/usr/local/bin/python

我做了brew install python,我的$PATH是好的,但仍然,which python给了我一个系统安装。重新启动终端解决了这个问题。

只做:

brew install python
brew link python

在此之后,将其添加到bashrc或bash_profile中:

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

享受吧!

根据自制程序安装程序本身的建议,请确保将此添加到您的.bashrc.zshrc:

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

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

当我深入研究时,我发现在/usr/local/bin中没有python可执行文件。可执行文件名为python2。要解决这个问题,创建一个指向python2的符号链接python:

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

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

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

要使用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

您可以编辑/etc/paths以下是我的看法:

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

然后为python版本添加符号链接。对我来说

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

瞧!

由于High Sierra,你需要使用:

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

这是因为/usr/local不能再被咀嚼

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

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

在那之后,它应该能正常工作。

如果你是鱼壳

echo 'set -g fish_user_paths "/usr/local/opt/python/libexec/bin" $fish_user_paths' >> ~/.config/fish/config.fish

使用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 < / p >

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

你必须为python创建/添加一个别名,并将其放在你的.zprofile中(位于Users/username文件夹中,如果你按Shift+command+。

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

alias python ='opt/homebrew/bin/python3'

对于苹果的硅机器来说,路径略有不同。运行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)

试试这个

which python3

试着输入python3而不是python

祝福的人!我需要使用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.