Переключение Pip на UV в Dockerized Flask / Django приложении ( nickjanetakis.com )
Стоит отметить, что uv также поддерживает рабочий процесс, который напрямую заменяет pyenv, virtualenv и pip, не требуя изменения подхода lockfile/pyproject.toml.
uv python pin
uv virtualenv загрузит версию Python, указанную в файле .python-version (например, pyenv install ), и создаст virtualenv в текущем каталоге с именем .venv, используя эту версию Python (например, pyenv exec python -m venv .venv )
uv pip install -r requirements.txt будет вести себя так же, как .venv/bin/pip install -r requirements.txt .
uv run <команда> выполнит команду в virtualenv, а также выведет на экран все переменные окружения, указанные в файле .env (хотя будьте осторожны с проблемами приоритета: https://github.com/astral-sh/uv/issues/9465 )
# Убедитесь, что у нас всегда есть актуальный файл блокировки. if ! test -f uv.lock || ! uv lock –check 2>/dev/null; then uv lock fi Разве это не противоречит цели наличия файла блокировки? Если его нет или он недействителен, с файлом блокировки произошла какая-то катастрофа, и его должен обработать кто-то, знакомый с проектом. Иначе зачем вообще нужен файл блокировки? CI молча заменит файл блокировки и вызовет потенциальную путаницу.
В мире Python я часто вижу, как файлы блокировки рассматриваются как «странный шаг в процессе установки» и не подвергаются контролю версий.

Мне бы хотелось увидеть сравнение безопасности uv, pip, conda и любого другого модного менеджера пакетов, о котором я еще не слышал.
Скорость — это нормально, но безопасность менеджера пакетов гораздо важнее.
Source: news.ycombinator.com