Python / Любимые либы

Python библиотеки на все случаи серверной разработки


Веб-фреймворки

  • Django - самый популярный веб-фреймворк, куча функций из коробки (ака batteries included), куча интеграций; если хочется писать сервера на питоне, и не знаешь с чего начать - бери джангу - пусть генерится куча файлов на старте, но разобравшись в них, понимаешь, что фреймворки строятся на тех же концепциях
  • Django REST framework - мастхев чтобы писать апишки
  • Django Ninja - надстройка над DRF, которая позволяет писать апишки в стиле FastAPI - с помощью тайпингов и Pydantic
  • drf-yasg - лучший генератор swagger-доки для джанги
  • wagtail - cms для джанги
  • Flask - самый простой веб-фреймворк - начать можно с 1 файла с 5 строчками; но по сравнению с Джангой, мало батареек в коробке - надо куча всего доустанавливать - в итоге получается та же джанга
  • aiohttp - один из первых асинхронных фреймворков; по фичам - аналогичен фласку: в коробке роутинг, мидлваре, простенький сёрв статики; суть асинхронности в том, что повышается производительность серва; еще в коробке есть асинхронный веб-клиент
  • FastAPI - еще один асинхронный фреймворк (но можно писать и в синхронном стиле), суть в том, что схемы запросов и ответов можно описывать, используя тайпинги и Pydantic + есть интеграция со сваггером из коробки + неплохой диай на функциях

Работа с бд

  • Django ORM - лучшная ормка, идет в комплекте с Django
  • Sqlalchemy - лучшая либа для работы с бд, если не Django-проект; есть и орм, и возможность писать скл, используя sqlalchemy-конструкции, и писать сырой sql; есть куча дополнений, типа миграций, утилит по созданию бд; альтернативы: peewee - лайтовая ормка
  • aiopg - асинхронная работа с постгресом, есть интеграция с sqlalchemy-запросами; альтернативы: asyncpg
  • repka - собственная разработка, асинхронная абстракция над бд на базе aiopg
  • pymongo - официальный клиент для работы с монгой, есть асинхронная версия

Веб-клиенты

  • requests - самая популярная либа для http-запросов
  • httpx - асинхронный хттп-клиент - альтернатива aiohttp; respx - моки для либы
  • python-zeep - SOAP клиент
  • requests-html - лучший парсер html; альтернативы: BeautifulSoup
  • splinter - более высокоуровневая обертка над Selenium - штукой для управлением браузера; альтернативы: helium

Работа с данными

  • pydantic - комбо из питоновских дата-классов и парсилки джсона - очень приятно с данными работать становится; есть плагин на pycharm; альтернативы: питоновские датаклассы, attrs, marshmallow
  • humps - конвертит словари из одного нейминга в другой
  • more-itertools - различные утилитки для работы с коллекциями
  • parse - противоположность format - позволяет парсить строки по шаблону, не упарываясь регулярками

Работа с документами

  • jinja2 - лучший шаблонизатор
  • openpyxl - лучшая либа для работы с xlsx
  • jinja2xlsx - собственная разработка, конвертит html-таблицы в openpyxl-таблицы
  • python-pdfkit - лучший конвертер хтмл в пдф на базе wkhtmltopdf
  • python-docx-template - jinja2 шаблоны в ворде
  • docci - собственная разработка, абстракция работы с файлами: определение mime-type, конвертация в base64, сохранение/загрузка; а также работа с зип-архивами, эксельками, директориями
  • xmltodict - нормальная работа с xml

QA

Качество кода

  • black - форматтер кода
  • mypy - чекер типизации; альтернативы: pyright, pytype
  • flake8 - линтер, есть куча плагинов, быстрее pylint
  • pydocstyle - линтер, проверяющий наличие докстрингов
  • pre-commit - пре-коммит хуки - запуск штук, описанных выше, перед каждым коммитом; считай локальный сиай

Тестирование

Логгирование, профилирование, отладка

  • loguru - лучшая либа для логгирования
  • stackprinter - получше стектрейс; альтернативы: PySnooper
  • scalene - профилировщик

Девопс

  • gunicorn - популярный WSGI-сервер - масштабирует однопроцессорный сервы, типа джанги; альтернативы: uvicorn - асинхронный WSGI-сервер - ASGI
  • Supervisor - управление процессами - автоматически запускает/перезапускает процессы на линукс-машинке, напр. gunicorn, альтернативы: Docker
  • Fabric - выполнение команд на удаленной машине; альтернативы: ansible

Прочее

  • poetry - лучший менеджер зависимостей; есть плагин для пайчарма
  • pyjwt - работа с jwt-токенами
  • python-dotenv - читает .env-файл - файл с переменными окружения - удобно для локальных настроек
  • python-dependency-injector - норм ioc контейнер
  • celery - либа для работы с очередями задач; альтернативы: dramatiq, rq
  • click - либа для создания кли приложений; альтернативы: typer - кли на тайпингах; Gooey - делает юай из кли
  • babel - либа для локализации
  • pillow - популярная либа для работы с картинками
  • pypiserver - pypi сервер - полезно когда надо есть корпоративные либы
  • notifiers - либа для отправки уведомлений, напр. через Pushover; альтернативы: apprise
  • Sourcetrail - строит граф зависимостей / иерархию классов; есть плагин для пайчарма