Python-окружение, которое легко пересоздать

Отдельные зависимости проекта без установки пакетов в системный Python.

Два проекта требуют разные версии библиотеки. Установка всего в один Python превращает обновление одного проекта в эксперимент над другим. Виртуальное окружение выделяет проекту отдельное место для пакетов.

Создать окружение

Команды ниже предназначены для Linux и macOS с доступным python3. Выполняйте их из корня проекта.

bash
python3 -m venv .venv
. .venv/bin/activate
python -c 'import sys; print(sys.executable)'

Последняя команда должна показать интерпретатор внутри .venv. Если модуль venv недоступен, установите соответствующий пакет средствами своего дистрибутива.

Устанавливать через нужный интерпретатор

Когда в проекте есть requirements.txt, используйте:

bash
python -m pip install -r requirements.txt

Такая форма явно связывает pip с выбранным Python. Отдельная команда pip в неоднозначно настроенном PATH может относиться к другому интерпретатору.

Активация необязательна

Для автоматизации часто удобнее явный путь. Он не зависит от того, какой терминал активирован у пользователя.

bash
.venv/bin/python -m pip --version
.venv/bin/python app.py

Файл app.py здесь обозначает точку входа вашего приложения. В Windows путь к интерпретатору будет .venv\Scripts\python.exe.

Хранить рецепт, а не окружение

Добавьте .venv в .gitignore. Не переносите каталог окружения между машинами: в нём могут быть абсолютные пути и платформенные бинарные зависимости. Сохраняйте описание зависимостей и версию Python, чтобы создать окружение заново.

Проверка воспроизводимости проста: разверните проект в новом каталоге и установите зависимости по инструкции. Если всё работает только в старом окружении, вероятно, в описании пропущен пакет или локальная настройка. Само наличие venv не фиксирует версии зависимостей автоматически.

Документация

Python: venv ↗