繁体   English   中英

MacOS:如何降级自制 Python?

[英]MacOS: How to downgrade homebrew Python?

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

您可以使用brew switch切换版本。 例如,我只是像这样将 Python 3.7.0 降级到 3.6.5:

brew switch python 3.6.5

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

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

首先,如果可以避免的话,依赖系统 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 (system) 还是/usr/local/bin/python (brew installed user-land 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,这个答案应该会有所帮助: 如何使用 Brew 安装旧公式?

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

brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10

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。

无需降级 python,因为您可以在系统上同时使用它们。

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

python2 or python2-x filename.py

以及你需要 python 3 的地方

python3 or python3-x filename.py

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM