我正在运行MacOS Sierra 10.12.4并且我已经意识到自制的python已升级到版本2.7.13。如何切换回2.7.10?
答案 0 :(得分:24)
您可以使用brew switch
切换版本。例如,我只是将Python 3.7.0降级为3.6.5,如下所示:
brew switch python 3.6.5
不幸的是,brew versions
命令已被弃用,并且目前非常复杂to locate the available versions。我希望听到一个简单的解决方案。同时,如果您知道要切换到的版本,请尝试使用上面的命令。
我同意这里的答案,即virtualenvs是一个好主意,但是在自制软件中拥有所需的Python版本也是一个好主意。创建bin/python
是我的virtualenvs的方式,它是/usr/local/bin/python
的符号链接,因此当通过自制程序更新Python时,事情就破裂了。
答案 1 :(得分:6)
首先,如果您可以避免使用系统python作为用户土地代码,通常被认为是不好的做法。您需要假设系统实用程序需要特定版本的系统python,然后您的用户域代码可能永远被锁定到该python版本,这是不明智的。
其次,我不清楚为什么你需要2.7.10而不是2.7.13。具有相同次要修订号(2.7)的所有蟒蛇应该always be compatible。如果您需要2.6,那将是一个不同的故事,因为这是次要版本的变化。为2.7.x编写的代码应该都是兼容的。
但是,假设您的用例确实需要使用特定的Python版本,那么找到一个解决方案,请确保您确实已经开始升级系统python。如果您输入命令:which python
,您会得到/usr/bin/python
(系统)还是/usr/local/bin/python
(brew安装的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
中,或者您可能有{{1}别名指向你不想要的地方。验证您的$ PATH订单。
您可以通过删除它(python
)或更改符号链接(brew uninstall python
)来重置您自制的python。然而,使用virtualenv消除了对这些体操的大量需求。
如果你想通过自制软件安装Python的早期版本,这个答案应该有所帮助:How to install older formula using Brew?
最后一个选项:如果您必须拥有特定的python版本,pyenv可以提供帮助。
ln -s -f /usr/bin/python /usr/local/bin/python
答案 2 :(得分:1)
无需降级python,因为您可以在系统上同时使用它们。
要在其中使用python 2-x编译文件的位置。
python2 or python2-x filename.py
以及需要python 3的地方
python3 or python3-x filename.py
python的默认用法将导致使用最新版本,而降级到特定版本会让人很头疼,因为它不是直接的,因为python不能从3-x兼容到2-x。 >
答案 3 :(得分:0)
从https://www.python.org/downloads/release/python-360/
下载python 3.6.0将其作为普通软件包安装。
运行UsedRange
运行ls,所有已安装的Python版本将在此处可见。
运行cd /Library/Frameworks/Python.framework/Version
现在用sudo rm -rf 3.7
检查版本,现在是3.6。
答案 4 :(得分:-1)
这不是问题的直接答案,而是解释了避免触及系统python的解决方案。
一般的想法是你应该总是为你的项目安装独立的python。每个项目都需要自己的python版本(出于与库的兼容性原因),保留一个python版本并尝试使其适用于多个项目是不实际的。
我认为你的系统中发生了这个问题,因为另一个项目需要更高的python版本,现在你的其他项目需要更低版本的python。
处理python版本的最佳方法是使用virtualenv。
每个项目都有自己的python,所以你可以使用python 2.7和python 3的项目,它们永远不会触及彼此的依赖关系。
使用自制软件安装不同的python版本,然后在创建virtualenv时为每个项目安装,以决定选择哪个python。每次使用该项目时,python版本都是您在创建virtualenv时自己选择的版本。