Друзья, сложно не согласиться, что для маломальски серьёзного проекта возможностей стандартной библиотеки Python рано или поздно становится недостаточно. Вам может потребоваться загрузить и распарсить веб-страницу, использовать расширенные математические вычисления, более сложные нежели предоставляет модуль math, или написать асинхронный код. В таких ситуациях на помощь приходит главный источник сторонних библиотек Python -
Ссылка скрыта от гостей
По состоянию на середину 2025 года там опубликовано более 650К проектов, каждый из которых вы можете подключить в свой код и использовать его возможности.Можно с уверенностью сказать: почти любая идея, которая вам, как разработчику, пришла в голову, уже была реализована или находится в процессе написания. Конечно, никто не запретит вам самостоятельно попытаться решить эту же задачу, наступать на те же грабли и тратить часы, а то и дни на то, что уже давно было решено. Но эффективнее использовать уже готовые решения! Когда вам нужен молоток или гаечный ключ - проще зайти в магазин, чем начинать строительство металлургического завода.
Для взаимодействия с
Ссылка скрыта от гостей
- скачивания нужных вам пакетов в Python создали отдельный инструмент, который как несложно догадаться, называется менеджером пакетов - pip. В версиях Python младше 3.4 его требовалось устанавливать отдельно, а вот начиная с версии 3.6 он уже интегрирован в установочный модуль. |
Среди возможностей pip, как было сказано выше - получение, обновление и удаление пакетов, поддержка использования файла зависимостей requirements.txt. Но и недостатков у этого инструмента хватает - скорость работы оставляет желать лучшего, нет встроенной поддержки lock-файлов (нужны дополнительные инструменты вроде pip-tools) и, конечно, возникновение разного рода проблем при разрешении конфликтующих зависимостей - нужные версии приходится вручную откатывать или удалять.
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
. Вот о последнем и хочется рассказать подробнее.Сравнение скорости
Главное преимущество uv перед аналогами - его высочайшая скорость работы. Давайте проверим, насколько быстро uv справится с установкой
Ссылка скрыта от гостей
модуляРазница колоссальная - uv справился за 1.027 секунды, тот же pip-sync за 4.354 секунды, стандартный pip показал время в 1.5 секунды.
Такую скорость выполнения uv обеспечивает язык, на котором он написан - Rust. Да, вот так сложилось, что менеджер пакетов для языка Python написан на языке Rust. Подобный подход дает значительное преимущество перед Python-реализациями pip и pip-tools: потребляется меньше ресурсов, используется параллельная загрузка и установка, и мы не задействуем интерпретатор Python, то есть снижаем дополнительные накладные расходы. Кроме того, uv распространяется через один бинарный файл, не требующий зависимостей, ему также не нужен pip для установки.
В отличие от pip, в uv встроен собственный dependency resolver “решатель зависимостей”, который позволяет учитывать все версии пакетов одновременно.
Установка uv
Установка uv незамысловата - в Linux/macOS мы можем использовать утилиту curl для скачивания bash скрипта с нужными командами установки:curl -LsSf https://astral.sh/uv/install.sh | sh
а в Windows используем powershell:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Есть вариант установить uv через pip
С процедурой установки на другие системы можно ознакомиться на официальном
Ссылка скрыта от гостей
проектаРабота с версиями Python
Установив uv, мы можем сразу узнать, а вообще какие версии Python у нас сейчас установлены в системе.uv python list
Красным цветом uv выделил установленные версии Python - это 3.13.2, 3.13.0, 3.12.7 и 3.9.2, а серым показал доступные - те, что мы можем прямо из uv установить в систему с использованием конкретной реализации - cpython, pypy или graalpy (высокопроизводительная реализация Python на платформе GraalVM, предназначенная для ускорения Python-кода за счёт JIT-компиляции и интеграции с Java).
Для установки нужной версии используем аргумент install и указываем версию
uv python install 3.13.5
Обратите внимание на время скачивания и установки - прошло порядка 10 секунд, а у нас уже есть актуальная версия!
Через модуль platform мы можем вывести на печать версию интерпретатора
uv run python -c "import platform; print(platform.python_version())"
Инициализация проекта
Имея на руках нужную версию python, мы можем приступать к работе. После создания исходной папки, где будут храниться файлы проекта, мы должны создать базовую, "классическую" структуру Python-проекта, которая будет состоять из следующих папок и файлов:
uv init |
Вся структура файлов создана, добавлены необходимые заглушки и мы можем тут же начинать писать код. uv даже в main.py добавил функцию main и точку входа! Попробуем запустить:
uv run main
uv подтянул нужную версию интерпретатора из файла .python-version и выполнил код из файла main.py.
Мы можем указать иную версию Python в .python-version файле и именно она будет использована для запуска нашего кода:
Виртуальное окружение
uv самостоятельно создал виртуальное окружение - изолированную копию нашего Python интерпретатора со своей папкой для установки модулей. Такой подход позволит нам не затрагивать системные пакеты и другие проекты при добавлении новых библиотек. Другое преимущество использования виртуального окружения - возможность точно воспроизвести заданное окружение для обеспечения стабильности, то есть мы знаем, какие именно версии пакетов будут установлены, какие пакеты подключены и всё это в одной папке.Создать это виртуальное окружение можно самостоятельно командой
uv venv
Это аналог команды
Bash:
python -m venv
Также мы можем указать конкретный путь для хранения файлов
uv venv .my_venv
Давайте добавим в main.py файл код для получения нашего юзерагента и ip адреса через сервис
Ссылка скрыта от гостей
Python:
import requests
from fake_useragent import UserAgent
def main():
ip_url = "https://ifconfig.me/ip"
ua_url = "https://ifconfig.me/ua"
answer_ip = requests.get(ip_url).text
answer_ua = requests.get(ua_url).text
answer_ua_1 = requests.get(ua_url, headers={"User-Agent": UserAgent().random}).text
print(f'{answer_ip=}')
print(f'{answer_ua=}')
print(f'{answer_ua_1=}')
main()
Установка и управление зависимостями
Для выполнения нам нужно установить 2 пакета -
Ссылка скрыта от гостей
и
Ссылка скрыта от гостей
, для этого используем командуuv add requests fake-useragent
Выполнение кода
Запускаем наш кодuv run main.py
И видим ожидаемый результат от сервера - наш ip адрес, стандартный юзерагент и юзерагент, сгенерированный случайным образом.
Установить зависимости можно и из файла requirements.txt командой
Bash:
uv pip install -r requirements.txt
Какие еще полезные опции есть у параметра run?
Опция | Пример | Назначение | ||
|
| uv запустит файл main.py, с указанными модулями. Для каждого модуля нужен свой аргумент --with. Можно дополнительно указать определенную версию модуля | ||
|
| Установить и использовать опциональные зависимости (из pyproject.toml) Необходимо указать группы модулей в toml файле | ||
|
| Запустить команду в указанном виртуальном окружении | ||
|
| Указать версию интерпретатора Python явно и вручную | ||
|
| Не устанавливать зависимости, даже если они не найдены |
Что ещё стоит изучить
В статье мы узнали о базовом функционале uv - установке различных версий python, созданием окружения, управлением зависимостями и примерами запуска кода. Но арсенал инструмента гораздо богаче: здесь и возможность установки из локальных директорий, из git или по URL, возможность указания версии python, зависимостей и пакетов прямо в заголовке файла, создание lock-файла через uv pip compile, установка из uv.lock через uv pip sync, интеграция с MAKE и многое другое.
Как видите, uv предоставляет колоссальные возможности для запуска вашего кода разными интерпретаторами, под разными системами и с разными версиями. Он отлично заменяет собой инструменты вроде pip, venv и pip-tools, позволит иметь под рукой нужные версии Python прямо в консоли - не придётся открывать
Ссылка скрыта от гостей
, искать и скачивать конкретную версию - всё доступно прямо через uv, без перехода на внешние сайты. Скорость установки и выполнения опять же на высоте, а благодаря поддержке pyproject.toml uv особенно хорошо подходит для командной разработки. Все эти плюсы делают uv идеальным кандидатом на роль менеджера пакетов по умолчанию!Попробуйте использовать uv в своём следующем проекте, даже если вы пока работает с pip. Он легко интегрируется и не требует сложной миграции.
А узнать больше о языке программирования Python, научиться с нуля писать прикладной софт и понять, как этот язык программирования используется Пентестерами можно на наших курсах Академии Кодебай: Основы Python и Python для Пентестера.