如何在最新的OS X上安装多个Python版本并并行使用它们?
我想在OS X 10.11上运行多个Python版本的测试,包括:如何在最新的OS X上安装多个Python版本并并行使用它们?,python,macos,homebrew,Python,Macos,Homebrew,我想在OS X 10.11上运行多个Python版本的测试,包括: Python 2.6- Python 2.7-默认-已解决 Python 3.4- Python 3.5-通过brew安装-运行良好 康达Python 3.5- 我想通过tox运行测试,所以tox需要能够找到它们。遗憾的是,brew似乎不想安装3.4,因为他们添加了3.5,我显然不想删除3.5。这建议使用pyenv和所需的解毒功能。brew的基本设置要求: brew install pyenv pyenv-virtualen
- Python 2.6-李>
- Python 2.7-默认-已解决
- Python 3.4-李>
- Python 3.5-通过brew安装-运行良好
- 康达Python 3.5-李>
tox
运行测试,所以tox需要能够找到它们。遗憾的是,brew似乎不想安装3.4,因为他们添加了3.5,我显然不想删除3.5。这建议使用pyenv
和所需的解毒功能。brew的基本设置要求:
brew install pyenv pyenv-virtualenv pyenv-virtualenvwrapper
然后使用pyenv安装[version]
,安装所需的Python版本,而不是使用brew
安装Python。您可以使用pyenv versions
检查可用版本
最后,pip-install-detox
将确保您已经安装了tox
和detox
。然后,您应该能够在tox.ini
中指定所需的测试版本。我强烈建议您使用包管理器,如Anaconda
,这样可以轻松地安装不同的自包含虚拟环境
例如,要使用numpy
和python2.7
创建虚拟环境,以下是命令:
conda create--name py2_env numpython=2.7
然后切换到该环境:
source activate py2_env
pyenv
是您想要的东西。它工作得非常好:
pyenv允许您轻松地在多个Python版本之间切换。它简单、不引人注目,并且遵循UNIX的单一用途工具的传统,可以很好地完成一件事。这个项目来自rbenv和ruby构建,并针对Python进行了修改
通过自制软件安装:
$ brew update
$ brew install pyenv
它为您处理各种python的下载、编译和安装,例如:
$ pyenv install 3.7.2
它可以显示您已安装的版本,以及哪些版本处于活动状态:
$ pyenv versions
system
3.6.7
* 3.7.2
当您在一个新的项目目录中时,只需告诉pyenv在那里使用哪个python版本:
$ pyenv local 3.6.7 # Because e.g. tensorflow isn't compat. with 3.7 :-(
您可以在其他任何地方设置“默认”版本:
$ pyenv global 3.7.2
pyenv
一切都很好,但我觉得我们应该提到Kenneth Reitz提供的精彩的pipenv
库
它提供pyenv plus依赖项锁定功能,支持开箱即用的.env
以及更多功能。brew
本身就足以让我使用多个版本的Python。我没有严格地需要pyenv
或conda
要使用brew
安装各种版本,请运行以下命令:
brew install python@3.8
brew install python@3.9
创建虚拟环境时,请使用以下方法之一创建虚拟环境:
/usr/local/opt/python@3.8/bin
/usr/local/opt/python@3.9/bin
在创建虚拟环境时,我会避免使用/usr/local/bin/python3
,因为它指向的版本可能会更改。这可能会有所帮助:这不是一个选项,因为它仅适用于conda,我正在寻找一种比conda更适用的版本。Pipenv只能使用已经存在的python版本已安装,因此这对问题没有帮助。还需要brew postinstall python3,以便pip3可用。在当前版本中,pip3在运行Pyev install 3.x.yNote后直接可用。请注意,此时已进行解毒。如果我按照您的答案进行操作,您是否介意共享bash_配置文件的外观?此外,要在两个版本之间导航,需要brew取消链接python@3.8
&brew链接--强制python@3.9
@kd12345您不必取消链接或链接到“在版本之间导航”。而是为您的项目使用虚拟环境。