【问题标题】:How do I use brew installed Python as the default Python?如何使用 brew 安装的 Python 作为默认 Python?
【发布时间】:2011-07-06 16:09:26
【问题描述】:

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

【问题讨论】:

  • Homebew 不再影响 python 的系统安装。你可以这样做:export PATH="/usr/local/opt/python/libexec/bin:$PATH" 来源:discourse.brew.sh/t/…
  • 我尝试了所有提到的答案,/usr/local/bin 在我的 $PATH 中位于 /usr/bin 之前。我尝试了 brew link 和 unlink,brew doctor 没有报告 /usr/bin 在 /usr/local/bin 之前存在问题。仍然当我执行 which python 时,我得到 /usr/bin/python 而不是使用 brew 安装的那个。
  • 试试...哪个python2

标签: python homebrew


【解决方案1】:

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

brew doctor

输出:

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

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

【讨论】:

  • 确保路径中没有 /user/local/bin TWICE。由于某种原因,在我的 PATH 中它出现在 /usr/bin 之前和之后,这让我发疯了。
  • 许多程序在标头中使用 /usr/bin/python,这使得这不是一个可行的解决方案。
  • 仅适用于 High Sierra 中的 brew python2 在 /usr/local/bin 中,仅适用于 python;在~/.bash_profile中设置export PATH="/usr/local/opt/python/libexec/bin:$PATH"
【解决方案2】:

按照自制程序安装程序本身的建议,请务必将其添加到您的 .bashrc.zshrc

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

【讨论】:

  • 这是 High Sierra 上的正确方法。投票!
  • MacOS 默认使用 zsh 终端,所以很可能是 .zshrc 文件而不是 .bashrc 文件需要更改。
  • 除此之外,没有其他答案对我有用!在此处运行 macOS Catalina。谢谢!
  • 似乎为大苏尔工作。注意:需要这个来识别 OBS 的 python 位置,因为 OBS 似乎需要 python 3.7。 Brew 安装 3.9。
  • 在 OBS 中获取 python 脚本实际上是一回事。把这个留在这里,以防有人在路上发生:obsproject.com/forum/threads/…
【解决方案3】:

见: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

【讨论】:

  • 为什么我在 brew install python 时不会出现这种情况?
  • @BenWest 因为python3,现在你得到的是python2而不是python。
  • 我没有启用它。
  • 在我的情况下,我需要在运行此命令后重新启动终端(如 Martijn Courteaux's answer 所述)
  • 这个链接 python@2 为我
【解决方案4】:

快速修复:

  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/

【讨论】:

  • 谢谢,以上所有答案都解决了我的问题,但你做到了!非常感谢!
  • 问题在于它会为所有用户改变它:/,IMO最好改变一些更具体的东西。
  • @RandallHunt 喜欢什么以及怎么样?
【解决方案5】:

我为 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

【讨论】:

  • 确认这解决了 High Sierra 上的问题
  • 你是我的英雄。不敢相信我没有意识到这个解决方案!
  • 申请也需要重启终端
  • $ cd /usr/local/bin $ ln -s python3 python
  • 我想还将 pip 符号链接到 pip3(或 pip2)?
【解决方案6】:

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

【讨论】:

  • 这对我来说是个窍门。默认情况下,brew 在您的路径中安装 python3 - 不是 一个名为 python.. 的执行程序。特别是在我的路径中的其他目录之前引用 /usr/local/opt/python/libeexec/bin
【解决方案7】:

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

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

【讨论】:

  • 但它没有!
【解决方案8】:

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

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

更多点击这里: Issue #89791

【讨论】:

  • 我的编辑器“PyCharm”正在使用 ~/.bashrc,在这个小宝石之前我无法让 brew 的 python 工作。谢谢@Aben
【解决方案9】:

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

【讨论】:

  • 这就是我需要做的。不过,我不确定何时执行此操作。听起来就像只执行brew install python 然后,重新启动终端,没有别的?不需要brew unlink & brew link
  • 在使用 brew 安装 python 之后,“which python”给了我正确的本地 python 路径,但是“python”命令表明它是系统安装的一个调用。重启终端修复它。
  • 不需要重启终端,试试hash -r
  • JFC,直到我读到这篇文章,我才恍然大悟。我已经做了几次brew unlink & brew link。只需要重启终端
【解决方案10】:

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

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

【讨论】:

    【解决方案11】:

    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】:

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

      【讨论】:

        【解决方案13】:

        使用 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 版本。

        【讨论】:

          【解决方案14】:

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

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

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

          【讨论】:

            【解决方案15】:

            对于 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)
            

            【讨论】:

              【解决方案16】:

              只要做:

              brew install python
              brew link python
              

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

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

              享受吧!

              【讨论】:

              • 听起来你遇到了和我一样的问题。 brew 创建的所有链接,即使在此处的答案中使用 link 命令,在 /usr/local/bin 中也是针对 python2 而不是 python。使用别名来解决这个问题似乎是个坏主意,但我还没有找到更好的方法。
              • 我只是复制了cp /usr/local/bin/python2 /usr/local/bin/python而不是别名,它似乎运行良好。这是一个更丑陋的解决方法吗?
              【解决方案17】:

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

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

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

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

              瞧!

              【讨论】:

                【解决方案18】:

                如果你是鱼壳

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

                【讨论】:

                  【解决方案19】:

                  由于High Sierra,您需要使用:

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

                  这是因为/usr/local 不能再被改写

                  【讨论】:

                    【解决方案20】:
                    brew link python
                    

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

                    这必须指向你的 homebrew python 安装位置。

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

                    【讨论】:

                      【解决方案21】:

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

                      【讨论】:

                      • 在 os x 中,在路径中让 homebrew 的 python 出现在系统的 python 之前是没有风险的。这很常见。
                      • 另外,使用非 Apple Python 的需求是真实存在的。我一直在尝试让 matplotlib、NumPy 和 SciPy 启动并使用“默认”(又名 Apple)Python 运行。这是关于它对 32/64 位的处理,这只是将扩展分开。非常,非常,非常高兴有一个不错的 Brew 代替。默认情况下('brew install python')Brew 完全符合您的意思 - 它将第二个 Python 安装到一个单独的结构中,而不是覆盖路径(这正是出现这个 SO 问题的原因)。
                      猜你喜欢
                      • 2015-05-13
                      • 2021-03-06
                      • 1970-01-01
                      • 2020-12-31
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-07-29
                      相关资源
                      最近更新 更多