← Ко всем open source проектам

pyenv

pyenv/pyenv

pyenv — простой менеджер версий Python для переключения глобальной, локальной и проектной версии без тяжелой обвязки.

Форки 3,254
Автор pyenv
Язык Shell
Лицензия MIT
Обновлено 2026-06-27

Что это такое

pyenv — менеджер версий Python. Он позволяет переключать глобальную, локальную и проектную версию языка без тяжелой платформы вокруг разработки.

Проект был форкнут из идей rbenv и ruby-build, а затем адаптирован под Python и его особенности сборки.

Главная задача pyenv — дать разработчику простой способ держать несколько версий Python на одной машине и выбирать нужную для проекта.

Как устроен проект

Внутри проекта — shell-скрипты, логика shim, установка версий, правила поиска локальной версии и инструкции по настройке разных оболочек.

pyenv не пытается управлять пакетами внутри проекта. Для зависимостей обычно используют venv, pip, Poetry, uv или другие инструменты.

Как это используют

Обычный сценарий: установить нужный Python, записать локальную версию в проект и получить одинаковое поведение команд `python` и `pip` у всех участников.

Для библиотек pyenv полезен при проверке совместимости: можно быстро прогнать тесты на нескольких версиях Python без перестановки системного интерпретатора.

Практический пример

Локальная версия Python для проекта

Пример показывает базовый сценарий pyenv: установить нужный Python и закрепить его в конкретной папке проекта.

Язык: Bash
pyenv install 3.12.4
cd my-project
pyenv local 3.12.4
python --version

Сильная сторона проекта — простота Unix-подхода. Инструмент делает одну задачу и хорошо сочетается с другими частями Python-экосистемы.

Сильные стороны

Еще одно преимущество — локальные файлы версии. Они помогают репозиторию явно сообщать, какой Python ожидается при разработке.

Ограничение в том, что pyenv зависит от системных библиотек для сборки Python. На разных ОС установка может потребовать отдельных пакетов.

Ограничения

Также важно не путать версию языка и окружение зависимостей: pyenv выбирает Python, но не решает изоляцию пакетов автоматически.

pyenv лучше всего подходит разработчикам, которые ведут несколько Python-проектов и не хотят ломать системную установку языка.

Кому подойдет

Для контейнеров и серверов он не всегда нужен: там версия Python часто задается образом или пакетным менеджером окружения.

В каталоге pyenv важен как маленький, но очень практичный инструмент: он снижает трение вокруг версий языка, не навязывая новый процесс.

Хорошая практика — фиксировать версию в проекте и описывать установку коротко, чтобы новый участник не угадывал, почему тесты падают только у него.

pyenv особенно хорошо работает как часть простого соглашения проекта. Если в репозитории зафиксирована версия Python, новый участник не тратит полдня на догадки, почему локально не собираются зависимости. Инструмент не делает среду магической, но убирает один частый источник хаоса: случайное совпадение системного Python, пакетного менеджера и ожиданий проекта.

В повседневной работе pyenv особенно полезен после нескольких месяцев жизни проекта. Когда старый сервис, новая библиотека и экспериментальная ветка требуют разные версии Python, переключение одной командой экономит время и снижает риск случайно сломать системную установку.