SKIP TO CONTENT
Все статьи
TUTORIAL·June 21, 2026·4 МИН ЧТЕНИЯ

Как настроить быстрый и воспроизводимый Python-проект с помощью uv

Автор: VCA Newsroom

Эта статья переведена автоматически и может содержать ошибки. Посмотреть английский оригинал

Когда вы направляете ИИ-агента для написания кода вроде Claude Code или Codex на Python-проект, половина трудностей не имеет отношения к модели. Они идут от окружения: отсутствующие пакеты, не та версия Python, виртуальное окружение, которое агент забыл активировать, или коллега, у которого «на моей машине всё работает». Решение — проект, который воспроизводим по умолчанию, а самый быстрый способ получить такой сегодня — uv, Python-инструментарий на Rust от Astral.

uv заменяет pip, venv, pip-tools и pyenv одной быстрой командой и записывает lock-файл, так что одно и то же дерево зависимостей устанавливается везде. Это руководство проведёт вас от пустого места до зафиксированного, запускаемого проекта за несколько минут.

Почему окружение важно для агента

ИИ-агент выполняет команды в вашей оболочке и читает возвращающиеся ошибки. Если в вашем проекте нет объявленных зависимостей и закреплённой версии Python, агенту приходится угадывать — а неверная догадка отправляет его в кроличью нору установки пакетов глобально или редактирования не того интерпретатора. Проект с pyproject.toml и uv.lock даёт агенту единый источник истины: он может выполнить uv sync, получить нужные пакеты и двигаться дальше. Время на проверку вы тратите на логику, а не на археологию окружения.

Установка uv

На macOS или Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

На Windows (PowerShell):

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

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

Создание проекта одной командой

uv init weather-cli
cd weather-cli

Это создаёт рабочий проект: pyproject.toml для метаданных и зависимостей, файл .python-version, стартовый main.py, README.md и .gitignore. Вам не нужно создавать или активировать виртуальное окружение вручную — uv управляет .venv за вас в тот момент, когда оно понадобится.

Добавление зависимостей (и почему важен lock-файл)

uv add requests

Это делает сразу три вещи: записывает requests в pyproject.toml, разрешает полное дерево зависимостей и записывает uv.lock с точными, кросс-платформенными закреплёнными версиями. Закрепить версию можно прямо при добавлении:

uv add 'requests==2.31.0'

Закоммитьте uv.lock в Git. Это разница между «установить последний requests» (который со временем дрейфует) и «установить именно то дерево, которое мы протестировали». Когда ваш агент — или ваш CI, или новый коллега — выполняет uv sync, все получают побайтово идентичное окружение.

Запуск кода без активации чего-либо

uv run main.py

uv run следит за тем, чтобы окружение было синхронизировано, и затем выполняет код внутри него — без танцев с source .venv/bin/activate. Для агентов это особенно важно: каждый вызов инструмента часто происходит в новой оболочке, поэтому «активировать, затем запустить» нередко ломается, тогда как один uv run всегда работает. Обернуть можно любую команду:

uv run -- pytest -q
uv run -- flask run -p 3000

Закрепите версию Python, чтобы агент и CI совпадали

uv python pin 3.12

Это записывает версию в .python-version, и uv автоматически скачает и будет использовать этот интерпретатор — системный Python не требуется. Теперь версия, под которую вы разрабатываете, — это версия, которую используют ваш агент, ваши коллеги и ваш CI.

Короткий разобранный пример

Предположим, вы просите агента «добавить команду, которая получает сегодняшнюю погоду». Когда на месте uv, весь цикл получается чистым:

uv init weather-cli && cd weather-cli
uv add requests
uv python pin 3.12
# агент редактирует main.py, чтобы обратиться к API...
uv run main.py

Агенту никогда не приходится рассуждать о том, какой интерпретатор активен или установлен ли requests, — эти факты объявлены в файлах, которые он может прочитать. Если он вводит новую зависимость, он выполняет uv add, и lock-файл обновляется. Если что-то ломается в CI, uv sync воспроизводит точно такое же окружение локально, чтобы вы могли это отладить.

Куда движется uv

uv и родственные ему инструменты ruff (линтер/форматтер) и ty (проверка типов) широко распространены — один только uv скачивают более 100 миллионов раз в месяц. В марте 2026 года OpenAI согласилась приобрести Astral, компанию, стоящую за ними, чтобы интегрировать этот инструментарий в свою платформу Codex, при этом пообещав сохранить инструменты с лицензией MIT в открытом доступе (OpenAI, Simon Willison). На данный момент практический вывод неизменен: uv — самый быстрый путь к Python-проекту, на котором ваш ИИ-агент может строить, не угадывая.

Краткая шпаргалка

Задача Команда
Создать проект uv init <name>
Добавить зависимость uv add <package>
Закрепить Python uv python pin 3.12
Запустить код uv run <file or command>
Воспроизвести окружение uv sync
Обновить lock-файл uv lock --upgrade-package <pkg>

Auto-generated by Vibe Coding Academy on June 21, 2026, grounded in the real sources linked above. We review for accuracy, but please verify time-sensitive details against the primary sources.

Build Blueprint · Creator

Есть идея? Получите спецификацию, по которой ваш ИИ-агент сможет всё построить.

Опишите любой продукт и получите полный план сборки — стек, модель данных, экраны, API и готовый к вставке промпт для Claude Code или Cursor. Экспорт в PDF.

Открыть Blueprint