如何使用brew在macOS中安装Python 3的旧版本?
使用命令 brew install python
,我得到了Python 3的最新版本(目前为v3.7.0),但我想要Python 3.6的上一个版本(当前为3.6.5)。
我已经了解了另一个软件包pyenv
,可以帮助处理不同的python安装,但这个解决方案不适合我。
如何使用brew在macOS中安装Python 3的旧版本?
使用命令 brew install python
,我得到了Python 3的最新版本(目前为v3.7.0),但我想要Python 3.6的上一个版本(当前为3.6.5)。
我已经了解了另一个软件包pyenv
,可以帮助处理不同的python安装,但这个解决方案不适合我。
进行Python 3.6.5的全新安装,请使用以下命令:
brew unlink python # ONLY if you have installed (with brew) another version of python 3
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
如果您希望恢复先前安装的版本,则:
brew info python # To see what you have previously installed
brew switch python 3.x.x_x # Ex. 3.6.5_1
使用Homebrew安装Python有两个公式:python@2
和python
。
第一个是用于Python 2,第二个是用于Python 3。
注意:您可能会在网络上找到过时的答案,其中提到python3
作为安装Python版本3的公式名称。现在只有python
!
默认情况下,这些公式可以安装相应主要版本的Python的最新版本。因此,您无法直接安装像3.6这样的次要版本。
使用brew
,您可以使用公式的地址(例如在git存储库中)安装软件包。
brew install https://the/address/to/the/formula/FORMULA_NAME.rb
或者专门针对Python 3
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/COMMIT_IDENTIFIER/Formula/python.rb
你需要指定的地址是所需版本公式(python.rb)的最后一次提交的地址。 您可以通过查看homebrew-core/Formula/python.rb的历史记录找到提交标识符。
https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb
Error: python 3.7.0 is already installed To install 3.6.5_1, first run
brew unlink python``。在使用“简短回答”时,请注意。 - wuliwong我已经尝试了各种方法,但仍然无法使其正常工作。最后我使用了 pyenv
,它直接像魔法一样工作了。
所以,如果你已经安装了homebrew
,只需执行以下操作:
brew install pyenv
pyenv install 3.6.5
管理虚拟环境:
brew install pyenv-virtualenv
pyenv virtualenv 3.6.5 env_name
请参阅pyenv和pyenv-virtualenv了解更多信息。
我发现使用pyenv-installer比homebrew更容易直接安装pyenv和pyenv-virtualenv:
curl https://pyenv.run | bash
要管理Python版本,可以全局地进行:
pyenv global 3.6.5
或者在给定目录中进行本地操作:
pyenv local 3.6.5
virtualenv
不是必须的。使用 pyenv
可以管理 Python 版本,无需使用虚拟环境。 - ClementWalter作为更新,当进行操作时
brew unlink python # If you have installed (with brew) another version of python
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
您可能会遇到
Error: python contains a recursive dependency on itself:
python depends on sphinx-doc
sphinx-doc depends on python
要绕过它,请在brew install命令中加入--ignore-dependencies
参数。
要绕过它,请在brew install命令中加入--ignore-dependencies
参数。
brew unlink python # If you have installed (with brew) another version of python
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
我所做的是首先安装了Python 3.7,然后使用以下命令取消链接。
brew install python3
brew unlink python
然后我使用上面答案中提供的以下命令安装了Python 3.6.5。
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb --ignore-dependencies
之后我运行了以下命令
brew link --overwrite python
现在我已经在系统中安装了所有的Python。要查找运行:
Now I have all pythons in the system. To find out run
mian@tdowrick2~ $ python --version
Python 2.7.10
mian@tdowrick2~ $ python3.7 --version
Python 3.7.1
mian@tdowrick2~ $ python3.6 --version
Python 3.6.5
创建 Python 3.7 虚拟环境。
mian@tdowrick2~ $ virtualenv -p python3.7 env
Already using interpreter /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.7'
New python executable in /Users/mian/env/bin/python3.7
Also creating executable in /Users/mian/env/bin/python
Installing setuptools, pip, wheel...
done.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.7.1
(env) mian@tdowrick2~ $ deactivate
创建Python 3.6虚拟环境
mian@tdowrick2~ $ virtualenv -p python3.6 env
Running virtualenv with interpreter /usr/local/bin/python3.6
Using base prefix '/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/mian/env/bin/python3.6
Not overwriting existing python script /Users/mian/env/bin/python (you must use /Users/mian/env/bin/python3.6)
Installing setuptools, pip, wheel...
done.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.6.5
(env) mian@tdowrick2~ $ deactivate
python -V && python3.7 -V && python3 -V && python3.6 -V
Python 2.7.15 Python 3.7.3 Python 3.7.3 zsh: command not found: python3.6
- Waferpython3 -V
,这就是为什么您会得到两个3.7.3
并且缺少了3.6
的原因。 - Dr. Mianpython3.6
隐藏在 /usr/local/Cellar/python/3.6.5_1/bin
下。一旦我建立了一个链接,它就像你所说的那样工作。这个 Python 自管理系统似乎是由数百万程序员通过布朗运动编码而成的鲁比·戈尔德伯格分形。 - Eric Leschinski附注:你不必卸载系统中的其他Python版本。
编辑:
我发现了一种更好的解决方案,适用于MacOSX、Windows、Linux等操作系统。
conda init
conda create -n [你的虚拟环境名称] python=3.4.4
conda info --envs
检查所有已创建的虚拟环境。conda activate [步骤5中显示的虚拟环境名称]
激活所选的虚拟环境。如果有人遇到以下pip问题
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
问题的根源是openssl 1.1不再支持python 3.6。因此,您需要安装旧版本的openssl 1.0。
以下是解决方案:
brew uninstall --ignore-dependencies openssl
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
homebrew
解决这个问题,您可以暂时回溯homebrew-core
并设置HOMEBREW_NO_AUTO_UPDATE
变量以保持不变:cd `brew --repo homebrew/core`
git checkout f2a764ef944b1080be64bd88dca9a1d80130c558
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python
brew extract
命令将旧版本的homebrew公式提取到自己的tap(tap_owner/tap_name)中:brew extract python tap_owner/tap_name --version=3.6.5
对我来说最简单的方法是安装Anaconda: https://docs.anaconda.com/anaconda/install/
在那里我可以创建尽可能多的带有不同Python版本的环境,并且通过鼠标点击在它们之间切换。这不能更容易了。
要安装不同的Python版本,只需按照这些说明https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html即可。
使用不同Python版本的新开发环境只需2分钟即可完成。而且在将来我可以轻松地来回切换。