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

时间:2011-03-01 16:58:38

标签: python homebrew

我尝试在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?

19 个答案:

答案 0 :(得分:105)

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

brew doctor

输出:

  

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

     

考虑编辑你的.bash_profile,将:/ usr / local / bin放在前面   $ PATH中的/ usr / bin。

答案 1 :(得分:79)

请参阅:How to symlink python in Homebrew?

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

答案 2 :(得分:59)

快速修复:

  1. 打开/etc/paths
  2. 更改行的顺序(最高优先级)
  3. 在我的情况下/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/

答案 3 :(得分:37)

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

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

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

答案 4 :(得分:31)

根据自制软件安装程序本身的建议,请务必将其添加到.bashrc.zshrc

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

答案 5 :(得分:23)

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

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

答案 6 :(得分:16)

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. homebrew用于在旧版本中将python链接到/usr/local/share/python

答案 7 :(得分:12)

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

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

更多点击此处: Issue #89791

答案 8 :(得分:10)

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

另外,正如另一张海报所述(特别是在mac上)请勿将/ usr / bin中的python搞砸到指向另一个python安装。如果你这样做,你只是在惹麻烦。

答案 9 :(得分:9)

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

答案 10 :(得分:5)

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

答案 11 :(得分: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。 这就是我以前在终端中看到的行为。

答案 12 :(得分:4)

使用pyenv代替安装和切换Python版本。我已经使用rbenv多年了,但做的却是Ruby。在此之前,管理版本非常麻烦。

请咨询pyenv's github page以获得安装说明。基本上是这样的: -使用自制软件安装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版本。

答案 13 :(得分:1)

只是做:

brew install python
brew link python

完成后,将其添加到bashrc或bash_profile:

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

享受!

答案 14 :(得分:1)

如果你是鱼壳

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

答案 15 :(得分:0)

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

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

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

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

Voila!

答案 16 :(得分:0)

自高塞拉山脉以来,您需要使用:

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

这是因为/usr/local不再可用

答案 17 :(得分:0)

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

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

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

答案 18 :(得分:-3)

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