Вы устали манипулировать несколькими инструментами, такими как pip, virtualenv, conda, поэзия и pyenv, только для того, чтобы контролировать среду Python и зависимости? Вы не одиноки! Управление проектами Python может показаться головной болью, особенно со всеми различными менеджерами пакетов и инструментами, с которыми вам приходится спорить.
Введите uv — Универсальное виртуальное окружение. Думайте об этом как об универсальном менеджере пакетов, предназначенном для оптимизации и ускорения процесса разработки Python.
uv черпает вдохновение из Rye, еще одного современного менеджера по упаковке, чтобы объединить лучшие функции pip, pip-tools, pyenv, virtualenv и поэзии. Созданный с использованием Rust, uv не просто быстр, но и очень эффективен, упрощая все: от управления зависимостями до создания виртуальных сред.
Короче говоря, УФ – это консолидация. Зачем переключаться между несколькими инструментами, если можно использовать один унифицированный интерфейс? Он призван устранить трудности при разработке Python, предлагая вам более последовательный и быстрый способ управления вашими проектами. И это также невероятно быстро! Это открывает новые двери для динамичного управления
Одна из самых интересных особенностей uv — это возможность добавлять зависимости непосредственно в ваш скрипт Python. Представьте, что у вас есть такой простой скрипт:
# app.py import requests from rich.pretty import pprint response = requests.get("https://peps.python.org/api/peps.json") data = response.json() pprint([(k, v["title"]) for k, v in data.items()][:10])
Запуск этого сценария обычно означает настройку виртуальной среды и установку зависимостей вручную. С помощью uv вы можете встроить все свои зависимости непосредственно в скрипт, сделав его автономным и общим:
$ uv add --script app.py 'requestsАвтоматическое создание метаданных
Это добавляет метаданные в файл сценария:
# /// script # dependencies = [ # "requestsИ всё! Вы можете поделиться этим файлом с кем-то еще, и они смогут просто запустить:
$ uv run app.pyИ вуаля — никакой внешней настройки не требуется! И все благодаря скорости и эффективности УФ.
2. Создание виртуальных сред и управление ими
Начало работы с виртуальными средами
По умолчанию uv требует установки пакетов в виртуальных средах, чтобы поддерживать чистоту вашей системы и избегать конфликтов между различными проектами. Создать виртуальную среду с помощью uv просто:
$ uv venvЭто создаст каталог .venv, содержащий изолированную среду. Если вы хотите указать собственный каталог или версию Python, вы можете сделать:
$ uv venv my_env --python 3.9Среда готова к использованию, и uv автоматически обнаружит ее для всех ваших команд, таких как установка пакетов или запуск скриптов.
Когда использовать uv add или uv pip install
Используйте uv add: если вы хотите добавить зависимости в файл pyproject.toml вашего проекта. Это лучше всего подходит, когда вы разрабатываете проект и хотите отслеживать все зависимости, что делает проект легко доступным для совместного использования и воспроизводимости. Мы расскажем об этом в следующем посте, следите за обновлениями!
$ uv add fastapi
Это обновит ваш pyproject.toml и заблокирует версию в uv.lock.
Используйте установку uv pip: если вы хотите установить пакеты для быстрого использования без изменения файла проекта или для глобальных инструментов, где вам не нужно отслеживать их в pyproject.toml. Думайте об uv pip как о немедленной, разовой установке.
$ uv pip install requests
Выбор правильной команды гарантирует правильное управление вашим проектом, а также удобство его совместного использования или развертывания.
Мы все с этим сталкивались: сегодня ваш код работает, а завтра ломается из-за обновления пакета. С помощью uv вы можете предотвратить это, заблокировав версии пакета, чтобы обеспечить согласованность и воспроизводимость:
[tool.uv] exclude-newer = "2023-10-16T00:00:00Z"
Таким образом, даже если появятся новые версии ваших зависимостей, ваш проект останется стабильным. Идеально подходит для долгосрочных проектов, где сюрпризы вам не по карману!
Многим разработчикам приходится работать над несколькими проектами, для которых требуются разные версии Python. uv позволяет переключать версии так же просто, как:
$ uv python install 3.8 3.9 3.10
После установки версий переключение между ними происходит без проблем:
$ uv run --python 3.10 app.py
И если вы хотите заблокировать определенную версию для проекта:
$ uv python pin 3.9
Больше не нужно жонглировать командами pyenv — uv берет на себя всю тяжелую работу за вас.
uv обеспечивает плавность работы, но с повышенной производительностью. Установка пакетов проста:
$ uv pip install flask
Нужно добавить дополнительные зависимости или установить непосредственно из репозитория GitHub? Не парься:
$ uv pip install 'torch>=1.10.0' "git https://github.com/astral-sh/ruff"
Больше не нужно ждать медленной установки — uv выполняет свою работу быстро и эффективно.
Независимо от того, проверяете ли вы код или форматируете файлы, uv упрощает установку инструментов CLI:
Во всем мире:
$ uv tool install ruff
Локально в рамках проекта:
$ uv add ruff
Запуск временных команд без глобальной установки:
$ uvx black my_code.py
Попрощайтесь с конфликтами пакетов и загрязнением окружающей среды — просто запускайте свои инструменты в любое время и в любом месте.
Если вы хотите ускорить разработку Python и хотите перестать бороться с множеством инструментов, uv — ваш ответ. Благодаря оптимизированным командам, воспроизводимым средам и эффективному управлению пакетами uv превращает разработку на Python в удовольствие, а не в рутинную работу.
Готовы попробовать ультрафиолет? ? Начните сегодня и испытайте лучший способ управления своими проектами Python.
Следите за обновлениями во второй части, где мы углубимся в расширенные функции, такие как использование pyproject.toml, управление глобальной и локальной установкой инструментов, а также то, как UV может стать вашим лучшим другом при управлении сложными средами.
Удачного программирования! ?✨
Более подробную информацию и полную документацию можно найти в документации по uv.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3