Pyenv: Как управлять версиями Python без головной боли

Знакомая ситуация: вам нужно запустить старый проект, но он работает только на Python 3.6, а на вашей машине уже стоит 3.10. Или наоборот — нужно протестировать код на свежей версии, не трогая основную систему. Именно для таких случаев создан pyenv — простой и элегантный инструмент управления версиями Python.
Что может pyenv?
Pyenv решает три основные проблемы разработчиков:
- Параллельная работа с разными версиями Python — можно установить хоть 10 версий и переключаться между ними одной командой
- Изоляция проектов — каждый проект может использовать свою версию, прописанную в
.python-versionфайле - Простота установки — не нужно править системные настройки или переустанавливать Python
Как это работает?
Pyenv использует хитрую систему "шимов" (shims) — легковесных прокси-скриптов, которые:
- Встают первыми в вашем
PATH - Определяют, какая версия Python нужна (по файлу проекта или глобальной настройке)
- Перенаправляют вызов на нужную установленную версию
Главные команды, которые стоит запомнить
# Установка новой версии Python
pyenv install 3.10.4
# Переключение версии для текущего проекта
pyenv local 3.10.4
# Глобальное переключение версии
pyenv global 3.10.4
# Показать все установленные версии
pyenv versions
Чем pyenv лучше альтернатив?
В отличие от pythonbrew и pythonz, pyenv:
- Не зависит от самого Python (написан на чистом shell)
- Не нужно подгружать в shell (работает через модификацию PATH)
- Делает ровно одну вещь и делает это хорошо (UNIX-way)
Из личного опыта
Когда я впервые установил pyenv, он спас меня при тестировании библиотеки на совместимость с Python 3.7-3.10. Вместо танцев с виртуальными окружениями и переустановками, всё свелось к:
for ver in 3.7 3.8 3.9 3.10; do
pyenv local $ver
pytest
end
Когда особенно пригодится?
- Разработчикам библиотек — тестирование на разных версиях Python
- Системным администраторам — поддержка legacy-кода
- Участникам open-source проектов — когда нужно быстро переключаться между требованиями
- Преподавателям — демонстрация различий между версиями
Установка за 60 секунд
Для Linux/macOS:
curl -fsSL https://pyenv.run | bash
Или через Homebrew:
brew update
brew install pyenv
После установки не забудьте добавить инициализацию в shell-конфиг (для bash/zsh):
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
Pyenv — must-have инструмент в арсенале Python-разработчика. Простой, предсказуемый и решающий конкретную проблему. Если вы ещё не используете pyenv, самое время попробовать — это сэкономит вам часы нервотрёпки с версиями Python.
