Как установить несколько версий Python на последнюю версию OS X и использовать их параллельно?

Я хочу запустить тесты с несколькими версиями Python на OS X 10.11, в том числе:

  • Python 2.6 -?!
  • Python 2.7 - по умолчанию - разрешено
  • Python 3.4 -?!
  • Python 3.5 - установлен через brew - работает хорошо
  • Conda Python 3.5 -?!

Я хочу запустить тесты через tox, чтобы ток мог найти их. К сожалению, кажется, что brew не хочет устанавливать 3.4, поскольку они добавили 3.5, и я, очевидно, не хочу удалять 3.5.

Ответ 1

В этом сообщении в блоге предлагается использовать pyenv с желаемым detox. Для базовой установки с brew требуется:

brew install pyenv pyenv-virtualenv pyenv-virtualenvwrapper

Затем установите нужные версии Python с pyenv install [version], , а не, установив Python с помощью brew. Вы можете проверить доступные версии с помощью pyenv versions.

Наконец, pip install detox гарантирует, что у вас установлены tox и detox. Затем вы должны указать желаемые версии тестирования в tox.ini.

Ответ 2

Я бы рекомендовал использовать диспетчер пакетов, например Anaconda, https://www.continuum.io/downloads, что упрощает установку различных автономный virtual-envs.

Например, для создания виртуальной среды с numpy и Python 2.7 это команда:

conda create --name py2_env numpy python=2.7

И затем переключиться на эту среду:

source activate py2_env

Ответ 3

pyenv это то, что вы хотите. Это работает очень, очень хорошо:

pyenv позволяет легко переключаться между несколькими версиями Python. Он простой, ненавязчивый и следует традиции UNIX, состоящей из универсальных инструментов, которые хорошо выполняют одну задачу. Этот проект был разветвлен от rbenv и ruby-build и модифицирован для Python.

https://github.com/pyenv/pyenv

Установите его через Homebrew:

$ brew update
$ brew install pyenv

Он обрабатывает загрузку, компиляцию и установку различных питонов для вас, например:

$ 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