MacOS:如何降级自制Python?

问题描述 投票:0回答:6

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

python macos homebrew
6个回答
29
投票

您可以使用

brew switch
切换版本。例如,我刚刚将 Python 3.7.0 降级到 3.6.5,如下所示:

brew switch python 3.6.5

不幸的是,

brew versions
命令已被弃用,目前查找可用版本非常复杂。我很想听到一个简单的解决方案。同时,如果您知道要切换到的版本,请尝试上面的命令。

我同意这里的答案,即 virtualenvs 是一个好主意,但是在 homebrew 中拥有您需要的 Python 版本也是一个好主意。我的 virtualenv 的创建方式是,

bin/python
/usr/local/bin/python
的符号链接,因此当通过自制软件更新 Python 时,事情就崩溃了。


11
投票

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

其次,我不清楚为什么你需要 2.7.10 而不是 2.7.13。所有具有相同次要版本号 (2.7) 的 python 都应该始终兼容。如果您需要 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 old Formula using Brew?

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

brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10

2
投票

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了。


0
投票

无需降级 python,因为您可以在系统上使用两者。

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

python2 or python2-x filename.py

以及你需要 python 3 的地方

python3 or python3-x filename.py

Python的默认使用将导致使用最新版本,并且降级到特定版本非常令人头痛,因为它不是直接的,因为Python没有从3-x向后兼容到2-x。


0
投票

如果

brew link python@<VERSION>
不适合您。

您可以随时删除有问题的版本:

brew uninstall python@<VERSION>

-1
投票

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

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.