【问题标题】:Homebrew looses track of PythonHomebrew 失去了对 Python 的跟踪
【发布时间】:2017-07-18 21:15:33
【问题描述】:

在我最新的 Homebrew (1.2.4) 更新之前,我找到了 Python,如 brew --config 所示,并带有指向最新 Homebrew 版本的链接:

Python: /usr/local/bin/python => /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/bin/python2.7

which -a 可以看到这个和 macOS 系统提供的 Python。

更新后,我无法访问此 Python(尽管它仍然存在,并且以 python2 的形式提供),而 brew --config 列出的只是旧系统提供的 Python

Python: /usr/bin/python

which -a

这是最新 Homebrew 的预期行为吗?如果没有,是否有修复我曾经拥有的对最新 Homebrew Python 的访问权限?


请注意,我还得到以下结果(这意味着我不能使用brew 来修复自己):

$ brew link --overwrite --dry-run python2
Warning: Already linked: /usr/local/Cellar/python/2.7.13_1
To relink: brew unlink python && brew link python
$ brew link --overwrite --dry-run python
Warning: Already linked: /usr/local/Cellar/python/2.7.13_1
To relink: brew unlink python && brew link python
$ brew link --overwrite --dry-run python3
Warning: Already linked: /usr/local/Cellar/python3/3.6.2
To relink: brew unlink python3 && brew link python3

我天真地假设我可以用“手动”解决这个问题

ln -s /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /usr/local/bin/python

但我想知道,鉴于 Homebrew 对 Python 配置做出了如此深刻的改变,是否还会发生更多变化(这样的链接会中断)。毕竟,最新的更新选择了删除这个链接。

【问题讨论】:

    标签: python configuration homebrew


    【解决方案1】:

    这是预期的 (though poorly documented) 行为。

    为了确保可以访问已安装的 Python,现在需要将 /usr/local/opt/python/libexec/bin 添加到您的 PATH 中,或者使用

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

    或将其添加到/private/etc/path

    这不仅会恢复对python 的访问权限,还会恢复对pip 和其他与Python 相关的工具的访问权限,而对这些工具的访问权限也会随着此次更新而消失。现在通过/usr/local/opt/python/libexec/bin 中的符号链接实现对所有这些工具的访问:

    2to3@ -> ../../bin/2to3-2
    easy_install@ -> ../../bin/easy_install-2.7
    idle@ -> ../../bin/idle2
    pip@ -> ../../bin/pip2
    pydoc@ -> ../../bin/pydoc2
    python@ -> ../../bin/python2
    python-config@ -> ../../bin/python2-config
    pythonw@ -> ../../bin/pythonw2
    smtpd.py@ -> ../../bin/smtpd2.py
    

    请注意(无需用户干预即可更改上述路径)此更新似乎违反了PEP 394

    更通用的python 命令应该在任何时候安装 安装了 Python 2 的版本,并且应该调用相同版本的 Python 作为python2 命令

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 2022-09-14
      • 2012-05-30
      • 1970-01-01
      • 2015-05-07
      • 2012-09-17
      • 2015-04-03
      相关资源
      最近更新 更多