Поскольку все приведенные выше ответы довольно стары, я бы хотел обобщить мои выводы здесь. Я пытался выяснить, как это работает с Python после перехода с rvm / ruby, и не смог найти четкого объяснения где-либо в Интернете.
Итак, у нас есть следующие опции на Macos:
Домашний напиток (только MacOS)
... Можно установить python
и python3
. Они будут храниться в погребе Доморощенного и снабжены ссылками с /usr/local/bin
. По умолчанию python
, установленный с использованием brew
, составляет 2.7.6.
Пакеты, установленные с использованием pip
, перейдут в расположение по умолчанию (у вас также есть символические ссылки pip
и pip3
).
Pyenv (наследник Pythonbrew)
... Является альтернативой Homebrew (на Macos) способу установки и поддержки нескольких версий Python. В Linux нет Homebrew, поэтому Pyenv является специализированной версией для Python. Он также собирает Python из исходного кода.
Pyenv сохраняет установки Python в ~/.pyenv/versions/
и позволяет быстро переключаться между ними и использовать одинаковые имена для двоичных файлов (python
, pip
и т. Д.). Он использует «shim» двоичные файлы, которые являются поддельными двоичными файлами, такими как python
, pip
и т. Д., Которые имитируют Python и вместо этого просто молча перенаправляют выполнение на текущую активную версию.
Пакеты, установленные с использованием pip
, перейдут в активную установку Python.
Итак, ни один из этих методов на самом деле не достаточен для поддержки отдельных установок Python и наборов версий пакетов (как это делает rvm с наборами gemsets) для каждого проекта. Следовательно:
Virtualenv
... это самая близкая вещь к рвм. Цитировать это сообщение :
устанавливает чистую копию Python в новом каталоге, копируя или связывая файлы из вашей основной установки Python для создания новых каталогов bin и lib
Таким образом, он использует текущую активную копию Python и копирует ее в отдельный каталог. virtualenvwrapper
добавляет функциональность для управления этими средами и автоматически активирует их, используя cd
, как и rvm
.
Это позволяет выделить версию Python и установленные библиотеки, используемые для каждого проекта. Однако он не устанавливает python
версии самостоятельно.
Таким образом, звучит так, как будто большинство людей используют комбинацию pyenv
+ virtualenv
или brew
+ virtualenv
(варево, конечно, зависит от Macos). Первая часть используется для установки версий Python (при необходимости), а вторая - клонировать их для разных проектов и переключаться между ними.
PS: Я только начинаю понимать, пожалуйста, поправьте меня, если что-то здесь не так.
PPS: Мне кажется, что весь этот бизнес можно улучшить, объединив pyenv и virtualenv под одной крышей ...