【问题标题】:MacOS: How to downgrade homebrew Python?MacOS:如何降级自制 Python?
【发布时间】:2017-10-28 06:54:54
【问题描述】:

我正在运行 MacOS Sierra 10.12.4,并且我意识到自制 python 已升级到版本 2.7.13。如何切换回 2.7.10?

【问题讨论】:

  • 从不触摸系统 python。安装您自己的独立 Python 版本。
  • 为什么你认为你需要降级到 2.7.10? 2.7.13 给你带来了哪些问题,可以用不同的方式解决吗?
  • 最后但同样重要的是,这与自制软件有什么关系?
  • 实际上我不确定 2.7.13 版是否有问题,所以我想确保尝试使用 2.7.10 版。那么如果我安装了我的独立python版本,我该如何将其设置为系统默认值?
  • 听起来你可能问错了问题。

标签: python macos homebrew


【解决方案1】:

首先,如果可以避免的话,通常认为依赖系统 python 来获取用户空间代码是不好的做法。您需要假设系统实用程序需要特定版本的系统 python,然后您的用户土地代码可能会永远锁定到该 python 版本,这是不明智的(除非您正在编写系统实用程序,在这种情况下只需使用 /bin /python,但是你不会问这个问题...)。

其次,我不清楚您为什么需要 2.7.10 而不是 2.7.13。所有具有相同次要修订号 (2.7) 的 python 都应该always be compatible。如果您需要 2.6,那将是另一回事,因为这是次要版本的更改。为 2.7.x 编写的代码应该都兼容。

但是,假设您的用例确实需要使用特定的 Python 版本——现在就得到一个实际的解决方案——请确保你从一开始就真正升级了系统 python。如果你输入命令:which python,你会得到/usr/bin/python(系统)还是/usr/local/bin/python(brew安装的用户级python)。例如,/usr/bin/python -V 给我 2.7.10,即使 python -V 给我 2.7.13(通过 brew)。

您可能通过brew 安装了最新的python 2.7.x,它将/usr/local/bin/python 作为符号链接放在您的$PATH 中,或者您可能有一个python 别名指向您不想要的地方。验证您的 $PATH 订单。

您可以通过删除它 (brew uninstall python) 或更改符号链接 (ln -s -f /usr/bin/python /usr/local/bin/python) 来重置您的自制 python。然而,使用 virtualenv 消除了对大部分此类体操的需求。

如果您想通过自制软件安装以前版本的 Python,这个答案应该会有所帮助:How to install older formula using Brew?

最后一个选择:如果您绝对必须拥有特定的 python 版本,pyenv 可以提供帮助。

brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10

【讨论】:

  • 自制/版本已弃用:(
  • 在“pyenv global 2.7.10”之后如果我执行“python -V”仍然得到 2.7.13
  • brew 开关说:python 在地窖中没有版本“2.7.10”。
  • pyenv 通过修改你的 PATH 来工作。您需要确保 export PATH=$(pyenv root)/shims:$PATH 按照说明 github.com/pyenv/pyenv 将其放入您的 .bash_profile
  • 太棒了!现在可以了。所以这就是问题所在,我需要 python 2.7.10。多谢了
【解决方案2】:

这不是问题的直接答案,而是解释了避免接触系统 python 的解决方案。

一般的想法是,您应该始终为您的项目安装独立的 python。每个项目都需要自己的 python 版本(出于与库的兼容性原因),保留一个 python 版本并试图使其与多个项目一起工作是不切实际的。

我假设您的系统中发生此问题是因为另一个项目需要更高版本的 python,而现在对于您的其他项目,您需要更低版本的 python。

处理 python 版本的最佳方法是使用 virtualenv。

每个项目都有自己的 python,因此您可以拥有使用 python 2.7 和 python 3 的项目,并且它们永远不会触及彼此的依赖关系。

使用 homebrew 安装不同的 python 版本,然后在创建 virtualenv 时为每个项目决定选择哪个 python。每次您使用该项目时,python 版本将是您在创建 virtualenv 时自己选择的版本。

【讨论】:

    【解决方案3】:

    您可以使用brew switch 切换版本。例如,我刚刚将 Python 3.7.0 降级为 3.6.5,如下所示:

    brew switch python 3.6.5
    

    不幸的是,brew versions 命令已被弃用,它目前相当复杂to locate the available versions。我很想听听一个简单的解决方案。同时,如果您知道要切换到的版本,请尝试上述命令。

    我同意这里的答案,即 virtualenvs 是一个好主意,但是在自制软件中拥有所需的 Python 版本也是一个好主意。我的 virtualenvs 的创建方式,bin/python 是指向/usr/local/bin/python 的符号链接,所以当通过自制软件更新 Python 时事情就坏了。

    【讨论】:

    • Error: python does not have a version "3.6.5" in the Cellar.
    • 您提到的行下面的行应该告诉您在地窖中安装了哪个版本的python。 $ brew switch python 3.6.5 Error: python does not have a version "3.6.5" in the Cellar. python installed versions: 3.6.5_1, 3.7.0
    • 显然,switch 选项已从 Homebrew 中删除。我通过使用brew link python@3.8解决了它。
    【解决方案4】:

    https://www.python.org/downloads/release/python-360/下载python 3.6.0

    将其安装为普通包。

    运行cd /Library/Frameworks/Python.framework/Version

    运行 ls,所有已安装的 Python 版本都将在此处可见。

    运行sudo rm -rf 3.7

    现在通过python3 -V查看版本,现在是3.6。

    【讨论】:

      【解决方案5】:

      没有必要降级 python,因为你可以在你的系统上使用这两者。

      您希望使用 python 2-x 编译文件的位置。

      python2 or python2-x filename.py
      

      你需要python 3的地方

      python3 or python3-x filename.py
      

      默认使用python会导致使用最新版本,降级到特定版本是很头疼的,因为它不是直接的,因为python没有从3-x向后兼容到2-x。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-06
        • 2017-05-10
        • 2021-01-04
        • 2020-08-18
        • 2016-08-23
        • 2021-03-30
        • 2012-03-04
        • 2021-03-07
        相关资源
        最近更新 更多