如何在最新的OS X上安装多个版本的Python并同时使用它们?

时间:2016-05-01 15:31:09

标签: python macos homebrew

我想在OS X 10.11上运行多个Python版本的测试,包括:

  • Python 2.6 - ?!
  • Python 2.7 - 默认 - 已解决
  • Python 3.4 - ?!
  • Python 3.5 - 通过brew安装 - 效果很好
  • Conda Python 3.5 - ?!

我想通过tox运行测试,因此tox需要能够找到它们。可悲的是,似乎brew不想安装3.4,因为他们添加了3.5,我显然不想删除3.5。

5 个答案:

答案 0 :(得分:18)

blog post建议将pyenv与所需的detox一起使用。 brew的基本设置要求:

brew install pyenv pyenv-virtualenv pyenv-virtualenvwrapper

然后使用pyenv install [version]安装所需的Python版本,而不是使用brew安装Python。您可以使用pyenv versions检查可用版本。

最后,pip install detox将确保您已安装toxdetox。然后,您应该能够在tox.ini

中指定所需的测试版本

答案 1 :(得分:2)

我强烈建议您使用Anacondahttps://www.continuum.io/downloads等软件包管理器,这样可以轻松安装不同的自包含virtual-envs

例如,要创建一个numpyPython 2.7的虚拟环境,这是命令:

conda create --name py2_env numpy python=2.7

然后切换到那个环境:

source activate py2_env

答案 2 :(得分:2)

pyenv是您想要的东西。效果非常好:

  

pyenv使您可以轻松地在多个版本的Python之间切换。它简单,简单,遵循UNIX的一站式工具传统,可以很好地完成一件事。该项目是从rbenv和ruby-build派生的,并针对Python进行了修改。

https://github.com/pyenv/pyenv

通过Homebrew安装它:

$ 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

答案 3 :(得分:0)

pyenv就足以使用多个版本的Python。我并不一定需要condabrew

要使用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

在创建虚拟环境时,我会避免使用.some-block { width: calc( ( 100% / 11 ) - 9.09px ); flex-shrink: 0; } .some-block:nth-of-type(5) { // Will attempt to take the whole width, but its siblings refuse to shrink, so it'll just take every bit of remaining space. width: 100%; } ,因为它指向的版本可以更改。

答案 4 :(得分:0)

正如前面的答案也提到的..不需要 pyenv,这对我来说很完美:

brew install python@3.7
brew install python@3.8
brew install python@3.9

然后只需在 ~/.bashrc 中添加相应的版本行

export PATH="$PATH:/usr/local/opt/python@3.7/Frameworks/Python.framework/Versions/3.7/bin"
export PATH="$PATH:/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/bin"
export PATH="$PATH:/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/bin"