Python-библиотеки, которые пригодятся каждому разработчику на Python
Узнаём у экспертов-питонистов, какие Python-библиотеки они используют и могут посоветовать другим разработчикам.
39К открытий39К показов
Спросили у экспертов-питонистов, какие полезные Python-библиотеки они используют и рекомендуют для других разработчиков.
Раду Карунту
разработчик хостинг-провайдера и регистратора доменов REG.RU
pydantic
Python является не типизированным языком программирования и с одной стороны — это его преимущество, которое способствует быстрому изучению и устанавливает низкий порог входа, но в какой-то момент, отсутствие типизации становится проблемой.
С помощью pydantic и подсказок типов данных из PEP 484 можно превратить python в строго типизированный язык. Особенно полезно, когда в вашем приложении есть API, но нет контрактов.
Пример кода.
loguru
Удобный логгер на смену стандартного logging. Помимо того, что не требует сложных конфигураций, обладает огромным количеством полезных фич и хорошо работает с асинхронным кодом.
Разноцветный вывод логов в консоль, информативные трейсбэки с разными уровнями и подсказками, удобный встроенный парсер логов, поддержка многопоточности и потокобезопасность — это малая доля функциональности этой прекрасной Python-библиотеки. По простоте использования она сравнима с обычным принтом, но по функциональности это целая ракета.
factory_boy
Если вы покрываете свой код unit-тестами, то вам знакома ситуация, когда вы тратите время на генерацию тестовых данных и различных фикстур. Особенно актуально, когда вы используете ORM и у вас много моделей с большим количеством полей.
Вместо того, чтобы тратить время на написание различных наборов данных и хелперов-генераторов, чтобы покрыть все возможные кейсы, достаточно создать фабрику, указать тестируемую модель и при вызове указать желаемое количество фикстур.
pymystem3
Отличная Python-библиотека от Яндекс для обработки естественного языка. В отличие от pymorphy2 не так хорошо приводит слово к нормальной форме, но прекрасно, и самое главное — очень быстро, определяет часть речи и лексемы слова. Работает только с русским языком.
black
Параллельно вместе с Python развивалось и соглашение о написании кода PEP8. Кодстайл — это неотъемлемая часть любого проекта, особенно когда вы работаете в команде. Чтобы следовать всем канонам требуется много времени и практики, но чтобы ваш код всегда выглядел так как надо, можно воспользоваться black.
Этот автоформатер сэкономит ваше время, уменьшит количество замечаний на ревью и ваш код будет одинаковым всегда, независимо от проекта.
Дмитрий Бардин
руководитель группы разработки ИТ-компании КРОК
На Python мы разрабатываем в основном решения в области computer vision (например, в таких) , поэтому наша подборка так или иначе с этим связана. Очень помогают:
- Flask — микро веб-фреймворк, который позволяет быстро делать сервисы и интегрировать наши решения. Имеет много полезных расширений. Подходит и для экспериментов, и для промышленного использования.
- Keras — классный высокоуровневый API к TensorFlow. Позволяет сильно сэкономить время и сохранить код читабельным. Достаточно низкий порог входа по сравнению с чистым TF.
- Numpy — очень удобный инструмент для работы с многомерными массивами и матрицами, незаменима в глубоком обучении.
- Pillow — старая добрая Python-библиотека для работы с изображениями. Много форматов, пиксельные манипуляции, фильтры, эффекты.
Дмитрий Плевков
Python разработчик aim digital agency
Я включил в свой список не самые популярные, но от этого не менее полезные Python-библиотеки.
Библиотека транслитерации iuliia
Иногда возникает необходимость записать кириллические слова латиницей. Существуют разные стандарты и правила транслитерации, поэтому где-то я Dmitrij, где-то Dmitry, а где-то Dmitrii.
В библиотеке стандарты собраны воедино и корректно реализованы специальные правила для некоторых сочетаний букв и окончаний слов. На домашней странице кратко описаны различия между схемами для удобного выбора.
Комфортная валидация данных с pydantic
Практически в любом проекте нужно принимать данные от пользователей или от коллег из других проектов.
Эти данные обязательно нужно валидировать, чтобы потом не было мучительно больно. Проект pydantic позволяет избавиться от рутины и делать валидацию с комфортом для разных типов данных. Можно описать нужную структуру данных, чтобы не только проверять их на входе, но и получать подробные сообщения при наличии ошибок. Можно писать свои правила валидации для отдельных полей, валидировать некоторые поля совместно (например, если поле фамилия заполнено, то должно быть заполнено и поле имя) и многое другое.
Dramatiq для обработки распределенных задач
Думаю практически каждый питонист сталкивался с проектом Celery.
Dramatiq — это проект человека, который настолько устал от некоторых проблем в Celery, что решил написать свой проект. Получилось очень хорошо. Если вам нужно выполнять любые задачи, которые хочется отправить в фон (перерасчёт каких-то показателей, массовое обновление различных данных из внешних сервисов, подготовка писем для рассылки, генерация отчётов и т.п.) эта библиотека для вас.
Httpx — асинхронная библиотека для работы с http
В мире Python практически образцом по удобству использования и функциональности служит библиотека requests. К сожалению её нельзя использовать в асинхронном коде.
Авторы httpx создают асинхронную библиотеку для работы с http с таким-же интерфейсом, как у requests. Синхронно работать с httpx тоже можно.
Проект пока официально в бете, но уже довольно стабилен и используется многими программистами.
Loguru для настройки логирования
Настраивать логирование через стандартную библиотеку logging — невесёлое занятие. Если ваш проект не настолько разросся, чтобы настраивать для него syslog, journald, или ELK стек, но хорошие логи видеть уже хочется — попробуйте loguru.
Главный плюс этой Python-библиотеки — простота настройки и куча приятных плюшек из коробки:
- подсветка сообщений разными цветами,
- хорошее форматирование,
- удобная настройка логирования в файлы с ротацией и архивированием и многое другое.
Python-библиотека для обнаружения дат — dateparser
Спасительная библиотека, которая придёт на помощь, если нужно распознать дату из строк самых разных форматов. Будет полезна, если вы парсите веб-странички или какие-то логи из самых разных источников.
Может распознавать как обычные варианты, например ‘2 марта 2021 в 15:00’, ‘2021-03-04 10:01:02 UTC+3’, так и такой экстрим как ‘через 5 дней’, ‘неделю назад’. Поддерживает множество языков.
Python-библиотека для создания прогресс баров tqdm
Иногда нужно запустить скрипт, который обрабатывает много данных (это может быть management команда для Django или просто скрипт для конвертации большого числа файлов). Если в консоли ничего не происходит, то через какое-то время кажется, что скрипт завис, непонятно, с какой скоростью продвигается процесс, сколько ещё ждать.
С помощью библиотеки tqdm можно быстро создавать индикаторы (прогресс бары) для отображения процесса работы. Из коробки интегрируется с IPython/Jupyter.
Александр Абросимов
Senior Python Developer компании Usetech
pympler
На мой взгляд, это один из самых полезных инструментов, когда появляется необходимость измерять, отслеживать и анализировать использование памяти конкретными объектами в python приложениях.
retrying
Удобная Python-библиотека, которая позволяет повторить вызов функционала в том случае, если он не был успешно завершен. Например, это может быть полезно тогда, когда необходимо повторить запрос к какому-либо внешнему сервису, если с первого раза не получилось до него «достучаться». Само собой вы можете изменять множество переменных, например, количество попыток, время ожидания попыток и так далее.
responses
Инструмент для имитации ответов на запросы, выполненных при помощи библиотеки requests. Очень полезен при тестировании проверки поведения функционала в зависимости от того, какой ответ вернет внешний сервис.
faker
Faker позволяет генерировать фиктивные данные по различным категориям. Например, имена, адреса, данные банковских карт, телефонные номера и так далее. Список категорий действительно обширный. Достаточно часто именно эта библиотека является необходимой при тестировании функционала.
rich
Инструмент предоставляет большие возможности и удобный API для форматирования выводимого приложением текста в консоль. Позволяет менять стиль текста и его цвет, рисовать таблицы, подсвечивать синтаксис языка, работать с emoji и многое другое. Хочу обратить внимание, что библиотека написана не на python, но помогает в работе с python приложениями.
py-spy
Рy-spy — это сэмплирующий профилировщик Python приложений. Отличительной особенностью этого профилировщика является то, что он позволяет подключиться к уже работающему приложению, которое необходимо проанализировать, без добавления какого-либо кода. Инструмент предоставляет возможность в реальном времени наблюдать за тем, что в данный момент выполняется и сколько времени это занимает, накапливать информацию о работающем приложении и использовать эту информацию для, например, генерации flamegraph. Очень полезно, когда нужно найти проблему в приложении «здесь и сейчас», либо, когда нет возможности изменять код для интеграции с другими профилировщиками.
freezegun
Бывают ситуации, когда необходимо написать тесты для функциональности, которая имеет разное поведение в зависимости от текущего времени/даты. Этот инструмент как раз для таких случаев. Он позволяет зафиксировать время на том значении, которое необходимо, путем подмены модуля datetime.
funcy
Также неплохая библиотека, которая содержит в себе набор функциональных утилит.
39К открытий39К показов