【问题标题】:How to link home brew python version and set it as default如何链接 home brew python 版本并将其设置为默认值
【发布时间】:2013-10-20 21:00:50
【问题描述】:

我刚从 MacPorts 切换到 HomeBrew。在安装了所有必需的 XCode 版本和其他软件后,我尝试使用自制软件安装 python:我认为它已成功安装,但是当我执行 which python 时,它仍然向我显示 2.7.3,我认为这是 Mountain Lion 附带的版本。

which python
/usr/local/bin/python

python --version
Python 2.7.3

所以我再次尝试安装

brew install python --framework --universal
Warning: python-2.7.5 already installed, it's just not linked

但它说 python 2.7.5 已经安装并且没有链接,我试着做brew link python

这导致我收到以下消息,所以我不知道我应该做什么:

正在链接 /usr/local/Cellar/python/2.7.5... 警告:无法链接 python。取消链接...

Error: Could not symlink file: /usr/local/Cellar/python/2.7.5/bin/smtpd2.py
Target /usr/local/bin/smtpd2.py already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
  brew link --overwrite formula_name

To list all files that would be deleted:
  brew link --overwrite --dry-run formula_name

【问题讨论】:

  • 可能与其他几个重复。 This one 似乎有最好的解决方案。或者this one.
  • 好的,当你执行这些命令时会发生什么?

标签: python macos homebrew


【解决方案1】:

brew install python3安装python3后 我收到了错误:

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

在输入brew link python3 后,错误是:

Linking /usr/local/Cellar/python/3.6.4_3... Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

解决问题:

sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/*
brew link python3

之后,我可以通过输入python3 ?来打开python3

(来自https://github.com/Homebrew/homebrew-core/issues/20985

【讨论】:

  • 你不必chown -R /usr/local,仅供参考...在下面发布答案
  • Chaim Eliyah:可能。但是,代码 sn-p 来自官方自制软件存储库。
【解决方案2】:

在终端中,输入:

brew link python

【讨论】:

  • 不,我得到Linking /usr/local/Cellar/python/3.6.4_4... Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks/Python.framework
【解决方案3】:

如果你用过

brew install python

在“取消链接”之前 你有

brew info python
/usr/local/Cellar/python/2.7.11

python -V
Python 2.7.10

这样做

brew unlink python && brew link python

并打开一个新的终端外壳

python -V
Python 2.7.11

【讨论】:

  • 就像@eric-guo 写道:你需要--force,所以需要brew unlink python && brew link python2 --force
【解决方案4】:

我认为您必须准确地使用命令brew link python 链接哪个版本,例如:

brew link python 3

它会给你一个这样的错误:

Linking /usr/local/Cellar/python3/3.5.2... 
Error: Could not symlink bin/2to3-3.5
Target /usr/local/bin/2to3-3.5
already exists. 

您可能想要删除它:

rm '/usr/local/bin/2to3-3.5'

强制链接并覆盖所有冲突文件:

brew link --overwrite python3

列出所有将被删除的文件:

brew link --overwrite --dry-run python3

但是你必须复制/粘贴命令来强制链接是:

brew link --overwrite python3

我认为您必须安装版本(较新的)。

【讨论】:

    【解决方案5】:

    在 OS X High Sierra 上,我必须这样做:

    sudo install -d -o $(whoami) -g admin /usr/local/Frameworks
    brew uninstall --ignore-dependencies python
    brew install python
    python --version # should work, returns 2.7, which is a Python thing (it's weird, but ok)
    

    感谢https://gist.github.com/irazasyed/7732946#gistcomment-2235469

    我认为这比递归地 chowning /usr/local 目录要好,但这可能会解决其他问题 ;)

    【讨论】:

      【解决方案6】:

      此答案用于在 Mac OS X El Capitan 上将 Python 2.7.10 升级到 Python 2.7.11。在终端类型上:

      brew unlink python
      

      在终端输入之后

      brew install python
      

      【讨论】:

        【解决方案7】:

        brew默认切换到python3,所以如果你还想将python2设置为默认bin python,运行:

        brew unlink python && brew link python2 --force
        

        【讨论】:

          【解决方案8】:

          您可以按照以下步骤操作。

          $ python3 --version  
          $ brew unlink python@2
          $ brew link python3   
          $ python3 --version   
          

          【讨论】:

            【解决方案9】:

            我的问题是我有这么多不同版本的python,所以即使我做了brew链接,它也会打开一个不同的python3.7。我执行了以下附加步骤以使其默认链接后

            首先,打开设置python路径的文档

             nano ~/.bash_profile
            

            然后出现这样的事情:

            # Setting PATH for Python 3.7
            # The original version is saved in .bash_profile.pysave
            PATH="/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
            export PATH
            
            # Setting PATH for Python 3.6
            # The original version is saved in .bash_profile.pysave
            PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
            export PATH
            

            这里的问题是我的用于 brew 框架的 Python 不在 Library 文件夹中!!所以我改变了python 3.7的框架,在我的系统中如下所示

            # Setting PATH for Python 3.7
            # The original version is saved in .bash_profile.pysave
            PATH="/usr/local/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
            export PATH
            

            更改并保存文件。 重启电脑,输入python3.7,我得到了我为brew安装的python。

            不确定我的案例是否适用于所有人,但值得一试。不确定框架路径是否对每个人都一样,请在尝试之前确定。

            【讨论】:

              【解决方案10】:

              我使用这些命令来解决它。

              mkdir /usr/local/lib
              mkdir /usr/local/lib/pkgconfig
              brew link python
              

              【讨论】:

                猜你喜欢
                • 2016-04-29
                • 2017-11-27
                • 2018-01-14
                • 1970-01-01
                • 2020-02-10
                • 2022-01-10
                • 2017-08-05
                • 2021-11-28
                • 2012-03-10
                相关资源
                最近更新 更多