pip, venv и воспроизводимость
Что это и зачем
Виртуальное окружение изолирует установленные зависимости проекта. pip устанавливает distributions, а import загружает модули: названия могут различаться.
Как это работает
Создайте окружение python -m venv .venv. Активируйте .venv/Scripts/Activate.ps1 на Windows или source .venv/bin/activate на Unix. python -m pip использует pip выбранного интерпретатора. Зафиксируйте зависимости и отдельно зависимости разработки.
import sys
print(bool(sys.executable))
Когда применять
Храните pyproject.toml и lockfile, исключите .venv и секреты из git. Проверяйте sys.executable и python -m pip --version при проблемах. Запускайте тесты тем же интерпретатором, которым установлен проект.
Границы применения
Не копируйте .venv между системами и не коммитьте его. venv не изолирует сеть или файловую систему и не является sandbox. Не выполняйте pip-команды внутри REPL как Python-синтаксис.
Ошибки и лучшие практики
Активация лишь меняет PATH, можно вызывать интерпретатор окружения напрямую. Версия Python и версии зависимостей — разные ограничения. requirements без версий не обеспечивают воспроизводимость.
Понятна идея? Теперь проверим её в действии.