Библиотеки Python — это файлы с шаблонами кода. Их создали для того, чтобы люди не набирали каждый раз заново один и тот же код: достаточно открыть файл, вставить свои данные и получить результат.
Рассказываем, какие библиотеки часто используют разработчики на Python.
Для работы с приложениями
Одна из областей применения Python — разработка веб-приложений и десктопных программ. Библиотеки помогают сделать процесс проще.
Requests. Упрощает генерацию HTTP-запросов к другим сервисам, помогает писать их очень просто и быстро. Код получается лаконичным, а запрос легко настроить и отправить. Библиотека поддерживает множество функций и написана понятным языком.
HTTPX. Расширение для Requests. Оно поддерживает все функции библиотеки, помогает работать с HTTP и асинхронностью. HTTPX помогает отправлять и получать запросы, работать с клиент-серверными протоколами взаимодействия веб-сервера и приложения
Retrying. Автоматизирует повторные вызовы. Если действие в коде, например запрос к внешнему источнику, не выполнилось и вернуло ошибку, с помощью Retrying можно настроить автоматические повторные попытки. Количество попыток и возможные изменения в запросах тоже настраиваются.
Celery. Помогает правильно распределить множество задач в больших проектах, расставить приоритеты и выполнить их в оптимальной последовательности. Часто используется в backend-разработке, например с фреймворком Django.
Dramatiq. По назначению библиотека похожа на Celery, но считается более новой и работает иначе. Она нужна для распределения задач, которые выполняются фоново. Библиотека лишена ряда недостатков Celery и более удобна в использовании.
Flask. Микрофреймворк для создания простейших веб-приложений на Python. Flask помогает быстро создать простой проект и в дальнейшем масштабировать его. Он может интегрироваться с другими инструментами, например для дизайна и визуализации интерфейса.
| Библиотека | Что делает | Когда применять | Ключевое преимущество | Установка |
|---|---|---|---|---|
| Requests | Простой синхронный HTTP-клиент | Быстрые REST-запросы, интеграции | Читабельный API, стабильность | pip install requests |
| HTTPX | Современный HTTP-клиент с async | Асинхронные сервисы, HTTP/2 | sync + async, быстрее в I/O | pip install httpx |
| Retrying | Повтор попыток при сбоях | Нестабильные внешние API | Гибкая политика ретраев | pip install retrying |
| Celery | Очереди задач, фоновые джобы | Бэкенд, ETL, рассылки | Богатая экосистема бэкендов | pip install celery |
| Dramatiq | Лёгкие фоновые задачи | Микросервисы, простые пайплайны | Простота и скорость | pip install dramatiq |
| Flask | Микрофреймворк веб-приложений | Прототипы, микросервисы | Минимум магии, гибкость | pip install flask |
Для машинного обучения и ИИ
Машинное обучение, анализ данных, искусственный интеллект — это области, в которых Python используется как основной язык. Он применяется в распознавании, предсказании, генерации данных, в том числе в компьютерном зрении, обработке естественного языка и других направлениях. Библиотеки как всегда упрощают работу с задачами. Также они используются для математических расчетов, построения графиков и пр.
NumPy. Предназначена для работы с числами и сложной математикой. В первую очередь она облегчает расчеты с матрицами и многомерными массивами — именно в таком виде мы передаем любые данные на вход алгоритмам и моделям в методах глубокого обучения. Поэтому NumPy входит в базовый стек библиотек для Machine Learning.
SciPy. Основана на NumPy, но имеет более широкий функционал. Она предназначена для глубоких и сложных математических операций и вычислений. В SciPy много функций для научного анализа и работы с высшей математикой.
Matplotlib. Используется для удобного построения графиков и визуализации результатов. Активно применяется в задачах анализа данных, при оценке и сравнении метрик алгоритмов, наблюдениях за моделью. Нередко Matplotlib используется в тандеме с NumPy и SciPy.
Pillow. Предназначена для работы с картинками. Библиотека помогает их обрабатывать, применять различные эффекты, «чистить» от шума, работать с пикселями и делать многое другое. Обработка изображений обычно используется в задачах компьютерного зрения, когда нужно перевести картинку в понятный для компьютера формат.
TensorFlow. Мощная библиотека для глубокого обучения. В основном TensorFlow используется для создания и обучения нейронных сетей. Ее можно представить как «ядро» для математических вычислений на Python. Она представляет данные как тензоры — векторы, которые складываются в графы.
Keras. Упрощает использование TensorFlow. Keras отвечает за создание и настройку моделей и нейросетей, а TensorFlow выполняет в них расчеты.
PyTorch. Еще одна библиотека с открытым исходным кодом от Facebook*, которая используется для глубокого обучения, создания и обучения нейронных сетей. Она более новая, чем TensorFlow и показывает по сравнению с ней лучшие результаты.
Pymorphy2. Это морфологический анализатор русского языка. Он распознает и приводит слова к нормальной форме (например, «люди -> человек», или «гулял -> гулять»), меняет число, род, падеж и пр.
Pymystem3. Библиотека от Яндекса имеет точно такой же функционал, как и Pymorphy2, и является ее альтернативой. Pymystem3 быстро и качественно распознает части речи и лексемы слова.
OpenCV. Это открытая библиотека для работы с алгоритмами компьютерного зрения, машинным обучением и обработкой изображений.
| Библиотека | Что делает | Когда применять | Ключевое преимущество | Установка |
|---|---|---|---|---|
| NumPy | N-мерные массивы, линалг | База для расчётов и ML | Быстрые вект./матр. операции | pip install numpy |
| SciPy | Научные вычисления поверх NumPy | Оптимизация, статистика, сигналы | Большой набор научных модулей | pip install scipy |
| Matplotlib | Базовая визуализация | Аналитика, отчёты | Контроль над графиками | pip install matplotlib |
| Pillow | Обработка изображений | Препроцессинг CV-датасетов | Простые фильтры/форматы | pip install pillow |
| TensorFlow | Фреймворк DL/нейросетей | Продакшен-ML, TPU | Граф вычислений, экосистема | pip install tensorflow |
| Keras | Высокоур. API для DL | Быстрая сборка моделей | Простота и прототипирование | pip install keras |
| PyTorch | DL с динамич. графом | Исследования, продакшен | Интуитивный питоничный стиль | pip install torch |
| Pymorphy2 | Морфанализ русского | Лемматизация/формы слов | Точность для ru-текста | pip install pymorphy2 |
| Pymystem3 | Морфанализ от Яндекса | Альтернатива Pymorphy2 | Быстрый лемматизатор ru | pip install pymystem3 |
| OpenCV | Компьютерное зрение | CV-пайплайны, фильтры, фичи | Огромный функционал CV | pip install opencv-python |
Для логирования, обработки и форматирования данных
И при разработке, и при тестировании специалист должен иметь дело с большим количеством информации. «Сырые» данные нужно приводить к единому виду и очищать от лишних сведений, чтобы не вызывать ошибок и получать более точные результаты. Уже обработанные – заносить в различные системы. А саму работу программы следует логировать, то есть записывать сведения о ее действиях. Логи нужно форматировать, выводить и сохранять в файл. Для всего перечисленного тоже есть свои библиотеки.
Rich. Позволяет форматировать текст, который Python выводит в консоль. Словосочетание Rich Text означает «отформатированный», «украшенный» текст. Можно сделать разноцветными сообщения в консоли, изменить в них начертание шрифта, выводить таблицы, пользоваться эмодзи. Это удобно, если нужны понятные и наглядные логи.
Loguru. Инструмент для удобного и простого логирования данных. В Python есть встроенная библиотека logging, но многие разработчики считают ее неудобной из-за сложных конфигураций логов, неудобства настроек разного уровня логирования и ротации файлов логов. Поэтому они пишут логи через loguru. Библиотека имеет широкие настройки форматирования, удобна в работе и поддерживает множество функций, например архивирование файлов с логами.
Pydantic. Помогает не только обрабатывать данные: она вносит в Python строгую типизацию и четкость в работе. Но обычно ее используют для валидации и парсинга: Pydantic проверяет и приводит данные из других сервисов к единому виду. Разнородные данные сложно воспринимать и программе, и человеку.
Dateparser. Инструмент находит и определяет даты в массиве данных. Он работает с разными форматами записи: и строгими, и «человекопонятными». Dateparser сможет найти дату и формата «25.06.1999», и формата «вчера» или «месяц назад». В основном библиотека используется при парсинге данных.
| Библиотека | Что делает | Когда применять | Ключевое преимущество | Установка |
|---|---|---|---|---|
| Rich | Красивый вывод в консоль | Логи, таблицы, прогресс-бары | Цвет, форматирование, Markdown | pip install rich |
| Loguru | Упрощённое логирование | Быстрый старт логов | Простая конфигурация, ротация | pip install loguru |
| Pydantic | Валидация и парсинг данных | API-схемы, конфиги | Типобезопасность, автоконверсия | pip install pydantic |
| Dateparser | Парсинг «человеческих» дат | ETL, парсинг логов/текста | Понимает «вчера», «месяц назад» | pip install dateparser |
Для отслеживания и анализа
Во время работы программы разработчику часто необходимо «следить» за ее поведением и вовремя обнаруживать неполадки. Библиотеки ниже помогают решить эту задачу.
Py-spy. Следит за тем, что и как выполняет программа, сколько времени и ресурсов она тратит на разные задачи, мониторит ее работу. Py-spy сначала обращается к системе компьютера, а затем сохраняет и выводит полученную информацию, которую можно использовать в работе. Вам не нужно перезагружать или модифицировать работающую программу: инструмент помогает получать информацию, не затрагивая исходный код. Библиотека удобна при поиске багов, особенно если нельзя переписать код.
Pympler. Мониторит и анализирует память, которая используется при исполнении кода программ на Python. Инструмент находит ее избыточное потребление, утечки и другие баги. С помощью Pympler можно узнать все о размере и длительности процессов приложения на Python за время работы.
| Библиотека | Что делает | Когда применять | Ключевое преимущество | Установка |
|---|---|---|---|---|
| py-spy | Сэмплирующий профилировщик | Поиск узких мест без перезапуска | Без инвазивных патчей | pip install py-spy |
| Pympler | Анализ использования памяти | Утечки, рост объектов | Детальная статистика памяти | pip install pympler |
Для тестирования
Для проверки работоспособности программ обычно устраивают тестирование. Это отдельное направление в IT. Для кода на Python также пишут тесты, генерируют для них данные, меняют настройки среды и многое другое. Для упрощения таких задач тоже существуют специальные библиотеки.
Responses. Выше мы говорили про requests — это ее противоположность. Responses помогает генерировать различные ответы на запросы и затем анализировать их результаты. В отличие от requests, responses используется в основном при тестировании — помогает проверять, как приложение реагирует на разные ответы внешнего сервиса.
Freezegun. Библиотека поможет, если нужно протестировать работу программы в конкретный период. Она «замораживает» параметры даты и времени на определенной точке, нужной программисту. Это может быть полезно, например, если тестируемая программа должна работать по-разному в зависимости от времени суток или дня недели.
Faker. Для тестирования функциональности приложения часто нужно заполнять его данными, например о пользователях. Использовать реальные персональные данные в такой ситуации некорректно и небезопасно. Поэтому лучше воспользоваться Faker — библиотекой, которая помогает сгенерировать большое количество ненастоящей информации. Это могут быть ФИО, телефоны, даты рождения, данные карточек и многое другое.
Factory_boy. Еще один инструмент для генерирования данных. В отличие от Faker, он генерирует фикстуры — блоки кода, которые выполняются до или после тестовых функций. Фикстуры помогают привести приложение в нужное состояние, задать исходные данные или сгенерировать информацию для теста. Эта библиотека упрощает их создание и применяется в основном в unit-тестировании.
| Библиотека | Что делает | Когда применять | Ключевое преимущество | Установка |
|---|---|---|---|---|
| Responses | Мок HTTP-ответов для Requests | Юнит-тесты интеграций | Лёгкий контроль сценариев | pip install responses |
| Freezegun | «Заморозка» времени | Тесты, зависящие от дат | Простая фиксация now() | pip install freezegun |
| Faker | Генерация фейковых данных | Тестовые профили/записи | Много локалей и провайдеров | pip install faker |
| factory_boy | Фабрики и фикстуры | Юнит/интеграц. тесты | Декларативные фабрики | pip install factory_boy |
Для других задач
У Python много и других вариантов применения: написание скриптов, автоматизация рутинных задач в разработке и так далее. Вот несколько полезных библиотек, которые могут серьезно улучшить жизнь разработчику.
Funcy. Это набор утилит для практического применения, набор конструкций, которые упрощают код. Он облегчает написание программ и работу с простыми, но однообразными действиями. Например, Funcy упрощает повседневные задачи разработчика, например помогает быстро просмотреть структуру данных или модифицировать функцию.
Tqdm. Библиотека, полезная для написания скриптов. Она генерирует прогресс-бары, которые показывают продвижение по коду и оставшееся время его выполнения. Программа, которая долго работает, — «черный ящик» для разработчика: он не знает, зависла она или нет, на каком этапе выполнения сейчас находится. Tqdm помогает легко и быстро отслеживать ее состояние и получать больше информации. Информация о выполнении программы будет выводиться в консоль в удобном для разработчика виде.
Black. В разработке есть понятие — код-стайл, или code style. Это набор соглашений о том, как правильно оформлять код. Разработчики должны придерживаться код-стайла, чтобы легче понимать код друг друга. Соглашение об оформлении кода на Python называется PEP8. Писать рекомендуется в соответствии с ним, но проверять оформление вручную может быть долго и неудобно, а библиотека black проводит такие проверки автоматически. Это автоформатер: он исправляет нарушения код-стайла и делает код более чистым.
| Библиотека | Что делает | Когда применять | Ключевое преимущество | Установка |
|---|---|---|---|---|
| Funcy | Функц. утилиты и паттерны | Чистый код, композиция | Экономия шаблонного кода | pip install funcy |
| tqdm | Прогресс-бары в циклах | Долгие скрипты/ETL | Автоподхват итераторов | pip install tqdm |
| Black | Автоформаттер PEP 8 | Единый стиль кода | «Без споров о стиле» | pip install black |
*Принадлежит компании Meta, которая признана экстремистской на территории РФ.
