Управляем разными версиями python

Python, при всей его стабильности и устоявшемся api, продолжает активно развиваться: новые версии выходят примерно раз в два/два с половиной года. В то же время, в linux-операционных системах обновляются только минорные версии языка (скажем, 3.5.1 до 3.5.2), а новый python 3.6 из коробки можно будет "потрогать" только со следующей версией дистрибутива ОС.

Обновление ОС ради новой версии python - крайняя мера, а в случае серверов - и вовсе сомнительное удовольствие. Вот и выходит, что часто, чтобы попробовать все нововведения приходится использовать docker или устанавливать новую версию вручную. В последнем случае стоит быть очень внимательным, чтобы не заменить системную версию python, иначе можно заработать головную боль из-за проблем с совместимостью. В случае же, если альтернативную версию python необходимо установить на сервере, вариантов становится еще меньше (я обычно в таких случаях оборачиваю приложение в docker-контейнер).

Для решения этой проблемы имеется pyenv: инструмент для управления разными версиями python. С его помощью можно быстро и просто устанавливать, удалять и переключаться между множеством различных версий python, не покидая командной строки. Pyenv - это попытка объединить в одном месте все лучшее в python-мире: pip, virtualenv и pipfile. В месте с тем, это простой инструмент, который следует UNIX-традициям: делай одну вещь, но делай её хорошо.

pyenv позволяет:

  • изменять глобальную версию python, используемую по-умолчанию, для определенного пользователя;
  • выбирать определенную версию python для отдельных проектов;
  • переопределять версию python при помощи переменной окружения;
  • выполнять одни и те же команды с использованием нескольких разных версий python, удобно для проверки совместимости.

Read more...