Экосистема Python-приложений
Play ITЗагрузка интерактивного демо…
Play ITЗагрузка интерактивного демо…
Экосистема Python-приложений
Python — это язык программирования, вокруг которого сформировалась одна из самых разнообразных и насыщенных экосистем в мире современного программного обеспечения. Эта экосистема охватывает все уровни разработки и включает в себя фреймворки, библиотеки, инструменты сборки, среды выполнения, системы тестирования и специализированные платформы, объединённые общей философией ясности, простоты и гибкости.
Сборка в Python
Сборка в Python — это процесс создания исполняемого файла или пакета из исходного кода на языке Python. Этот этап необходим для распространения программ без установки интерпретатора Python на целевой машине. В Python для сборки применяются специализированные инструменты, которые упаковывают код, зависимости и ресурсы в один или несколько файлов.
Самый популярный инструмент сборки — PyInstaller. Он позволяет создавать исполняемые файлы для Windows, macOS и Linux из Python-скриптов. PyInstaller анализирует код и автоматически определяет зависимости, включая сторонние библиотеки и модули, необходимые для работы программы.
PyInstaller может собирать приложения в различные форматы:
- .exe — исполняемый файл для Windows;
- .app — пакет для macOS;
- .sh или исполняемый файл — для Linux.
Также поддерживаются дополнительные форматы, включая zip-архивы и контейнеры Docker.
При сборке PyInstaller анализирует исходный код и выявляет все используемые модули. Он также может включать в сборку дополнительные данные — изображения, конфигурационные файлы, базы данных и другие ресурсы. Для этого используются специальные флаги и параметры.
Сборка приложения может включать метаданные:
- Название программы;
- Версия;
- Описание;
- Автор;
- Иконка.
Иконка задаётся через флаг --icon при сборке. Форматы иконок: .ico для Windows, .icns для macOS, .png для Linux.
Популярные флаги:
--onefile— создание одного файла вместо папки с ресурсами;--windowed— запуск без консольного окна (полезно для графических интерфейсов);--add-Data— добавление дополнительных файлов в сборку;--hidden-import— явное указание скрытых импортов.
Создание исполняемого файла из Python-скрипта:
pip install pyinstaller
pyinstaller --onefile main.py
- Найдите результат в папке
dist.
Этот процесс позволяет распространять приложения, не требуя установки Python на целевой машине. PyInstaller поддерживает большинство стандартных библиотек и сторонних модулей, обеспечивая высокую совместимость.
Пример команды:
pyinstaller --onefile --windowed --icon=app.ico main.py
Установка фреймворков и инструментов
Установка компонентов экосистемы Python выполняется через систему пакетов. Основной инструмент — утилита pip, входящая в состав стандартной поставки интерпретатора. Все операции выполняются в терминале или командной строке операционной системы.
Перед pip install удобно убедиться, что вызывается нужный интерпретатор:
python -c "print('ok')"
Базовая установка пакетов
Установка отдельного пакета:
pip install имя_пакета
Установка конкретной версии:
pip install имя_пакета==3.10.0
Обновление установленного пакета:
pip install --upgrade имя_пакета
Просмотр установленных пакетов:
pip list
Создание файла зависимостей проекта:
pip freeze > requirements.txt
Установка зависимостей из файла:
pip install -r requirements.txt
Изоляция окружений
Перед установкой пакетов рекомендуется создать изолированное окружение. Это предотвращает конфликты версий между разными проектами и сохраняет чистоту глобальной установки Python.
Создание виртуального окружения через встроенный модуль venv:
python -m venv myenv
Активация окружения:
- Windows (PowerShell):
myenv\Scripts\Activate.ps1
- Windows (cmd):
myenv\Scripts\activate.bat
- macOS/Linux:
source myenv/bin/activate
После активации приглашение терминала изменится, указывая на использование изолированного окружения. Все последующие команды pip install будут устанавливать пакеты только в это окружение.
Установка основных категорий инструментов
Графические интерфейсы
Код ITЗагрузка примера кода…
Веб-фреймворки и серверы
Код ITЗагрузка примера кода…
Фоновые задачи
# Celery с брокером Redis
pip install celery redis
# RQ (Redis Queue)
pip install rq redis
Тестирование
Код ITЗагрузка примера кода…
Научные вычисления и машинное обучение
Код ITЗагрузка примера кода…
Управление зависимостями и качество кода
# Poetry
curl -sSL https://install.python-poetry.org | python3 -
# Conda — отдельная установка с сайта anaconda.com или miniconda.com
# Форматирование и анализ
pip install black isort flake8 mypy
Интерактивные среды
# Jupyter Notebook и расширения
pip install notebook jupyterlab ipywidgets
Систематизация ключевых компонентов экосистемы
1. Прикладные фреймворки и клиентские приложения
Клиентская часть экосистемы Python сосредоточена на создании приложений, с которыми взаимодействует пользователь напрямую. Эти приложения могут быть десктопными, мобильными или даже веб-ориентированными, но запускаемыми локально. Python предлагает несколько подходов к построению графических интерфейсов, каждый из которых ориентирован на определённый класс задач и целевую аудиторию.
Фреймворки для графических интерфейсов:
| Фреймворк | Тип интерфейса | Основа | Сценарий применения |
|---|---|---|---|
| Tkinter | Десктоп | Tcl/Tk | Прототипирование, учебные проекты, простые утилиты |
| PyQt5 | Десктоп | Qt | Профессиональные приложения с богатым интерфейсом |
| PySide6 | Десктоп | Qt | Альтернатива PyQt с официальной поддержкой Qt Company |
| Kivy | Мобильный/десктоп | OpenGL ES 2 | Мультитач-приложения, интерактивные установки |
| Toga | Нативный десктоп | Системные API | Приложения с нативным внешним видом на каждой платформе |
| BeeWare | Мультиплатформа | Набор инструментов | Создание нативных пакетов (.app, .apk) из единого кода |
Tkinter
Tkinter — стандартная библиотека для создания графических интерфейсов в Python. Она является обёрткой над системой Tcl/Tk, которая существует с конца 1980-х годов и до сих пор активно используется благодаря своей простоте и кроссплатформенности. Tkinter подходит для быстрого прототипирования, учебных проектов и небольших утилит, где не требуется сложный дизайн или высокая производительность. Интерфейсы, созданные с помощью Tkinter, выглядят нейтрально и работают одинаково на Windows, macOS и Linux.
Учебные материалы: Tkinter и GUI · Первая программа на Tkinter · Справочник по Tkinter — элементы UI · Примеры с разбором (Lab). Общая теория десктопа — Архитектура десктопных приложений.
PyQt и PySide
PyQt и PySide — это две реализации привязок к фреймворку Qt, одному из самых мощных и зрелых инструментов для разработки десктопных приложений. Qt предоставляет богатый набор виджетов, средства для работы с графикой, мультимедиа, сетью и базами данных. PyQt, разрабатываемый компанией Riverbank Computing, и PySide, официально поддерживаемый The Qt Company, дают разработчикам доступ ко всем возможностям Qt через Python. Эти библиотеки используются в профессиональных приложениях, требующих сложной логики взаимодействия, высокой отзывчивости и современного внешнего вида.
Учебные материалы: PyQt, PySide и Flet · Первая программа на PyQt6.
Kivy
Kivy — фреймворк, ориентированный на создание мультитач-приложений, в первую очередь для мобильных устройств, но также работающий на десктопах. Kivy использует собственную графическую систему на основе OpenGL ES 2, что позволяет ему обеспечивать плавную анимацию и отзывчивость даже на устройствах с ограниченными ресурсами. Он особенно популярен среди разработчиков, создающих интерактивные установки, образовательные приложения и игры.
Учебные материалы: Kivy — мобильные приложения и игры на Python · Практикум Kivy (2048, Pong, Snake) · мобильный раздел.
Toga
Toga — кроссплатформенный GUI-фреймворк, который использует нативные элементы управления каждой операционной системы. Он подходит для сценариев, где важен нативный внешний вид приложения на Windows, macOS и Linux.
BeeWare
BeeWare — более широкий проект, включающий Toga и инструменты для упаковки Python-приложений в нативные форматы (например, .app для macOS или .apk для Android). Цель BeeWare — позволить писать один код на Python и развертывать его как полноценное нативное приложение на разных платформах.
В последние годы появился интерес к использованию Python для создания веб-фронтенда. Такие проекты, как Anvil, PyScript и Streamlit, предлагают альтернативные пути взаимодействия с пользователем через браузер. Anvil позволяет писать полноценные веб-приложения на Python, включая клиентскую и серверную части, без необходимости использовать JavaScript. PyScript — это экспериментальная технология, позволяющая выполнять Python-код прямо в браузере с помощью WebAssembly и интерпретатора Pyodide. Streamlit — это фреймворк для быстрого создания интерактивных веб-интерфейсов для аналитики и машинного обучения, где каждое изменение в коде немедленно отражается в браузере. Эти инструменты расширяют границы Python за пределы традиционных областей применения, делая его языком полного стека.
2. Серверные и фоновые службы
Серверная часть экосистемы Python основана на стандартах WSGI (Web Server Gateway Interface) и ASGI (Asynchronous Server Gateway Interface), которые определяют, как веб-сервер взаимодействует с Python-приложением. WSGI — это синхронный интерфейс, ставший де-факто стандартом для большинства веб-фреймворков Python. ASGI — его асинхронное расширение, поддерживающее WebSocket, HTTP/2 и другие современные протоколы.
Веб-фреймворки и серверы:
| Компонент | Интерфейс | Особенность | Типичное применение |
|---|---|---|---|
| Django | WSGI | Полнофункциональный фреймворк "всё включено" | CMS, корпоративные системы, социальные платформы |
| Flask | WSGI | Микрофреймворк с минимальным ядром | REST API, микросервисы, прототипы |
| FastAPI | ASGI | Автоматическая генерация OpenAPI, типизация | Высокопроизводительные API, микросервисы |
| Quart | ASGI | Асинхронная версия Flask | Приложения, требующие асинхронности в стиле Flask |
| Sanic | ASGI | Высокая производительность "из коробки" | Высоконагруженные сервисы реального времени |
| aiohttp | ASGI | Низкоуровневый асинхронный клиент и сервер | Сетевые приложения с тонкой настройкой |
| uvicorn | ASGI-сервер | Высокая скорость, поддержка HTTP/2 | Запуск FastAPI и других ASGI-приложений |
| gunicorn | WSGI-сервер | Надёжность, процессы-воркеры | Продакшн-развёртывание Django и Flask |
Django
Django — это полнофункциональный веб-фреймворк, следующий принципу "всё включено". Он предоставляет ORM, систему аутентификации, административный интерфейс, маршрутизацию, шаблонизатор и множество других компонентов, позволяющих быстро создавать масштабируемые и безопасные веб-приложения. Django часто используется для построения контент-менеджеров, социальных платформ, корпоративных систем и API.
Учебные материалы: Django · Справочник по Django · Первая программа на Django · Практикум — доска объявлений · Первая программа на Django REST Framework.
Flask
Flask — это микрофреймворк, предлагающий минималистичный каркас для веб-приложений. Он не навязывает структуру проекта и позволяет разработчику выбирать необходимые компоненты. Flask популярен для создания REST API, микросервисов и прототипов, где важна гибкость и контроль над архитектурой.
Учебные материалы: Flask · Справочник по Flask · Первая программа на Flask.
FastAPI
FastAPI — современный фреймворк, ориентированный на создание высокопроизводительных API с автоматической генерацией документации. Он основан на ASGI и полностью поддерживает асинхронное программирование. FastAPI использует типизацию Python для валидации данных и генерации OpenAPI-спецификаций, что делает его особенно удобным для разработчиков, стремящихся к строгой контрактной модели взаимодействия.
Учебные материалы: FastAPI · Первая программа на FastAPI · FastAPI и база данных.
Quart, Sanic и aiohttp
Другие ASGI-совместимые фреймворки, такие как Quart (асинхронная версия Flask), Sanic и aiohttp, расширяют возможности асинхронной веб-разработки. Они позволяют обрабатывать тысячи одновременных соединений с минимальными затратами ресурсов, что особенно важно для реального времени, чатов, игровых серверов и IoT-платформ.
Другие open-source веб-фреймворки
| Фреймворк | Особенность | Типичное применение |
|---|---|---|
| Pyramid | Гибкая «пирамида» слоёв — от одного файла до крупного проекта | Проекты с нестандартной архитектурой |
| Tornado | Собственный event loop, WebSocket, long polling | Чаты, прокси, долгие соединения |
| Bottle | Один модуль без внешних зависимостей | Утилиты, встраивание |
| Falcon | Минимальный API-слой, высокий RPS | REST-микросервисы |
| Starlette | Низкоуровневый ASGI-каркас | Основа FastAPI, кастомные ASGI-приложения |
| Hug | Декораторы → автодокументация | Быстрые внутренние API |
| CherryPy | ООП: объекты публикуются как URL | Встраиваемые серверы |
| Web2py | Full-stack + веб-IDE | Обучение, быстрые CRUD |
| TurboGears | Композиция Werkzeug/SQLAlchemy | Гибкий full-stack |
| Litestar | Современный ASGI, типы, OpenAPI | Типизированные API на Python 3.10+ |
Сводная таблица по всем языкам — Open-source веб-фреймворки.
Celery
Для выполнения длительных задач вне основного потока запросов используются системы фоновой обработки. Celery — распределённая очередь задач, поддерживающая множество брокеров сообщений (RabbitMQ, Redis и другие). Она позволяет выполнять тяжёлые вычисления, отправку электронной почты, обработку медиафайлов и другие операции асинхронно.
RQ
RQ (Redis Queue) — более простая и легковесная альтернатива Celery, использующая Redis в качестве брокера. RQ ценится за прозрачность, простоту настройки и удобство отладки.
3. Тестовые и вспомогательные проекты
Надёжность программного обеспечения достигается через систематическое тестирование, и экосистема Python предлагает богатый арсенал инструментов для проверки корректности кода на всех уровнях — от единичных функций до комплексных пользовательских сценариев.
Инструменты тестирования:
| Инструмент | Уровень тестирования | Особенность | Преимущество |
|---|---|---|---|
| unittest | Модульный | Встроен в стандартную библиотеку | Отсутствие внешних зависимостей |
| pytest | Модульный/интеграционный | Простой синтаксис, богатая экосистема плагинов | Выразительность, параметризованные тесты, фикстуры |
| doctest | Документационный | Тесты внутри строк документации | Актуальность примеров в документации |
| Selenium | End-to-end | Управление реальным браузером | Тестирование сложных пользовательских сценариев |
| Playwright | End-to-end | Современная архитектура, поддержка трёх браузеров | Стабильность, скорость, работа с динамическим контентом |
| Hypothesis | Property-based | Генерация тестовых данных на основе свойств | Обнаружение граничных случаев и скрытых ошибок |
unittest
unittest — встроенный модуль стандартной библиотеки Python, реализующий подход к тестированию, вдохновлённый фреймворком JUnit из мира Java. Он предоставляет классы для организации тестовых случаев, методы установки и завершения окружения (setUp и tearDown), а также средства для группировки тестов и генерации отчётов.
pytest
pytest — сторонний, но чрезвычайно популярный фреймворк для тестирования, отличающийся лаконичностью синтаксиса и мощными возможностями расширения. В pytest не требуется наследование от специальных классов: достаточно написать функцию с префиксом test_, и она автоматически станет тестом. Фреймворк поддерживает параметризованные тесты, фикстуры (fixtures) для управления состоянием между тестами, плагины для интеграции с другими системами и подробные отчёты об ошибках.
Учебные материалы: Тестирование на pytest.
doctest
doctest — модуль стандартной библиотеки, позволяющий писать тесты прямо в документации. Он извлекает примеры использования функций из строк документации и проверяет, совпадают ли фактические результаты с ожидаемыми.
Selenium и Playwright
Для тестирования взаимодействия с внешними сервисами и веб-интерфейсами применяются специализированные инструменты. Selenium и Playwright — это фреймворки для end-to-end тестирования веб-приложений. Они управляют реальным браузером (или его безголовой версией), имитируя действия пользователя — клики, ввод текста, навигацию.
Requests-Mock
Requests-Mock — утилита для имитации HTTP-запросов, отправляемых с помощью популярной библиотеки requests. Она позволяет изолировать тестируемый код от реальных сетевых вызовов, что ускоряет выполнение тестов и делает их детерминированными.
Hypothesis
Hypothesis — библиотека для property-based testing, где вместо задания конкретных входных данных тест генерирует тысячи случайных значений на основе описанных свойств. Если хотя бы одно значение приводит к сбою, Hypothesis автоматически упрощает его до минимального воспроизводящего примера.
4. Интеграционные и специализированные платформы
Python стал де-факто стандартом в научных и аналитических областях благодаря своей выразительности и зрелым библиотекам.
Научные и аналитические библиотеки:
| Библиотека | Назначение | Ключевая структура данных | Сценарий применения |
|---|---|---|---|
| NumPy | Численные вычисления | Многомерный массив ndarray | Математические операции над массивами, линейная алгебра |
| SciPy | Научные алгоритмы | Расширение NumPy | Оптимизация, интегрирование, обработка сигналов |
| Pandas | Анализ данных | DataFrame, Series | Обработка табличных данных, очистка, агрегация |
| scikit-learn | Машинное обучение | Единый API для алгоритмов | Классификация, регрессия, кластеризация |
| TensorFlow | Глубокое обучение | Тензоры, графы вычислений | Production-развёртывание нейросетей |
| PyTorch | Глубокое обучение | Динамические вычислительные графы | Исследования, прототипирование моделей |
| spaCy | NLP | Doc, Token, Span | Промышленная обработка текста с высокой скоростью |
| Hugging Face Transformers | NLP | Предобученные модели | State-of-the-art решения для языковых задач |
NumPy
NumPy предоставляет эффективные многомерные массивы и операции над ними, оптимизированные на уровне C. Это основа для большинства вычислительных задач в Python.
SciPy
SciPy расширяет NumPy, добавляя алгоритмы для оптимизации, интегрирования, обработки сигналов, линейной алгебры и статистики.
Pandas
Pandas — библиотека для анализа и манипуляции табличными данными, предлагающая структуры DataFrame и Series, похожие на электронные таблицы, но с большей мощью и гибкостью.
Учебные материалы — 337 — NumPy: теория · Анализ данных — pandas, NumPy, SciPy · NumPy — массивы и матрицы (Lab) · Pandas — объединение таблиц, своды и временные ряды · примеры типовых операций. Математика LA — 342, 343.
scikit-learn
scikit-learn — библиотека классического машинного обучения, содержащая сотни алгоритмов для классификации, регрессии, кластеризации и предварительной обработки данных. Она ценится за согласованность API и отличную документацию.
Учебные материалы: Классическое машинное обучение на Python.
TensorFlow
TensorFlow — фреймворк глубокого обучения с поддержкой автоматического дифференцирования, GPU-ускорения и production-развёртывания моделей.
PyTorch
PyTorch — фреймворк глубокого обучения с динамическими вычислительными графами, который популярен в исследовательской среде и удобен в отладке.
Учебные материалы: PyTorch для разработчика.
spaCy
spaCy — промышленно ориентированная библиотека с высокой производительностью, предоставляющая готовые модели для токенизации, распознавания именованных сущностей, анализа зависимостей и других задач.
NLTK
NLTK — академический инструмент для NLP, богатый учебными материалами и алгоритмами.
Hugging Face Transformers
Hugging Face Transformers предоставляет доступ к тысячам предобученных моделей на основе архитектур BERT, GPT и других, что позволяет быстро внедрять state-of-the-art решения в проекты.
Работа с базами данных в Python осуществляется через ORM и низкоуровневые драйверы. SQLAlchemy — это мощный объектно-реляционный маппер, сочетающий декларативный стиль описания моделей с гибким SQL-выражением. Он поддерживает сложные запросы, связи между таблицами и транзакции. Peewee — более лёгкая альтернатива, подходящая для небольших проектов. Django ORM — часть фреймворка Django, интегрированная с его системой моделей и миграций.
Для асинхронного взаимодействия с базами данных используются специализированные драйверы — asyncpg для PostgreSQL, aiomysql для MySQL, motor для MongoDB. Они позволяют выполнять запросы без блокировки основного потока выполнения, что критично для высоконагруженных ASGI-приложений.
Оркестрация сложных рабочих процессов данных осуществляется с помощью Apache Airflow, Prefect и Dagster. Эти платформы позволяют описывать конвейеры обработки данных как графы зависимостей, отслеживать их выполнение, управлять расписаниями и обрабатывать ошибки. Airflow — самый зрелый из них, с огромной экосистемой плагинов. Prefect и Dagster предлагают более современные подходы к управлению состоянием и наблюдаемости.
Инструменты управления проектом:
| Инструмент | Функция | Формат конфигурации | Особенность |
|---|---|---|---|
| pip | Установка пакетов | requirements.txt | Стандарт де-факто, входит в поставку Python |
| venv | Изоляция окружений | Каталог с интерпретатором | Встроен в стандартную библиотеку |
| Poetry | Управление зависимостями и сборка | pyproject.toml | Единый инструмент для всего жизненного цикла пакета |
| conda | Управление пакетами и окружениями | environment.yml | Работа с бинарными зависимостями на уровне ОС |
| Black | Форматирование кода | Отсутствует (фиксированные правила) | Полное устранение споров о стиле |
| isort | Сортировка импортов | pyproject.toml / .isort.cfg | Автоматическая группировка и упорядочение импортов |
| flake8 | Линтер | setup.cfg / .flake8 | Проверка PEP 8 и обнаружение потенциальных ошибок |
| mypy | Статическая типизация | pyproject.toml | Проверка аннотаций типов до выполнения |
5. Расширения и инструменты разработки
Эффективная разработка на Python невозможна без зрелой инфраструктуры управления зависимостями, окружениями, качеством кода и интерактивной работы. Эта часть экосистемы обеспечивает воспроизводимость, поддерживаемость и удобство повседневной работы разработчика.
Управление пакетами начинается с pip — стандартного инструмента установки библиотек из PyPI (Python Package Index). Он позволяет устанавливать, обновлять и удалять пакеты, а также разрешать их зависимости. Для изоляции проектов используются виртуальные окружения. Встроенный модуль venv создаёт независимые каталоги с собственной копией интерпретатора и установленных пакетов, предотвращая конфликты версий между проектами.
Более современные инструменты, такие как Poetry и conda, расширяют эти возможности. Poetry объединяет управление зависимостями, виртуальными окружениями и сборкой пакетов в едином интерфейсе. Он использует файл pyproject.toml для декларативного описания зависимостей, включая точные версии и группы (например, для разработки и production). Poetry автоматически создаёт и управляет виртуальным окружением, упрощая настройку проекта. conda — это система управления пакетами и окружениями, изначально созданная для научных вычислений. Она работает не только с Python-пакетами, но и с бинарными зависимостями на уровне операционной системы, что особенно полезно при работе с библиотеками, требующими компиляции (например, NumPy или TensorFlow).
Сборка и распространение пакетов регулируется стандартами, закреплёнными в PEP 517 и PEP 518, которые продвигают использование файла pyproject.toml как центрального места конфигурации проекта. Этот файл заменяет устаревшие setup.py и setup.cfg, предоставляя единообразный способ указания инструментов сборки (например, setuptools, flit или hatch) и их параметров. setuptools остаётся самым распространённым инструментом для создания дистрибутивов, хотя его постепенно вытесняют более современные альтернативы.
Качество кода поддерживается с помощью линтеров, форматтеров и статических анализаторов. Black — это "неформатируемый" форматтер кода, который применяет строгие правила оформления без возможности настройки. Его цель — полностью устранить споры о стиле в команде. isort автоматически сортирует и группирует импорты по заданным правилам. flake8 проверяет соответствие кода рекомендациям PEP 8 и выявляет потенциальные ошибки. mypy — это статический анализатор типов, который проверяет корректность аннотаций типов в коде, помогая находить ошибки до выполнения программы.
Jupyter Notebook и JupyterLab — это интерактивные среды для исследования данных, прототипирования и документирования кода. Они позволяют смешивать исполняемый код, визуализации, математические формулы (в виде Markdown) и пояснительный текст в одном документе. Jupyter стал стандартом в научных и образовательных кругах, а также широко используется в индустрии для аналитики и машинного обучения.
Для повышения производительности критических участков кода применяются инструменты, связывающие Python с низкоуровневыми языками. Cython позволяет писать C-подобный код с аннотациями типов, который компилируется в расширения CPython. Это даёт значительный прирост скорости при сохранении совместимости с Python. PyO3 — это фреймворк для написания расширений на Rust, сочетающий безопасность памяти и производительность Rust с гибкостью Python. CFFI (C Foreign Function Interface) предоставляет простой способ вызывать функции из существующих C-библиотек без написания обёрток на C.
5.1 Популярные прикладные библиотеки и модули
Requests
Requests — базовая библиотека для HTTP-клиентов в синхронных приложениях.
HTTPX
HTTPX — современный HTTP-клиент с поддержкой синхронного и асинхронного режимов.
Retrying
Retrying — библиотека для повторных попыток выполнения операций при временных сбоях.
Dramatiq
Dramatiq — система фоновых задач с простым API и поддержкой RabbitMQ/Redis.
Matplotlib
Matplotlib — базовый инструмент визуализации данных и научной графики в Python. Глава — Matplotlib — графики, примеры — в лаборатории.
Pillow
Pillow — библиотека для обработки изображений и работы с растровой графикой.
Keras
Keras — высокоуровневый API для сборки и обучения нейросетей, часто поверх TensorFlow.
Pymorphy2
Pymorphy2 — морфологический анализатор русского языка.
Pymystem3
Pymystem3 — обёртка над Yandex mystem для лемматизации русского текста.
OpenCV
OpenCV — библиотека компьютерного зрения и обработки изображений/видео.
Rich
Rich — библиотека для форматированного вывода в терминал — таблицы, прогресс-бары, подсветка.
Loguru
Loguru — упрощённый логгер с удобной настройкой и читаемыми сообщениями.
Pydantic
Pydantic — валидация и сериализация данных на основе type hints. Общая шкала проверок (null, тип, диапазон) — Проверка и валидация.
Dateparser
Dateparser — парсинг дат из естественного языка.
py-spy
py-spy — профилировщик Python-приложений без модификации исходного кода.
Pympler
Pympler — анализ потребления памяти Python-объектами.
Responses
Responses — мокирование HTTP-запросов к requests в тестах.
Freezegun
Freezegun — фиксация системного времени в тестах.
Faker
Faker — генерация тестовых данных — имён, адресов, email и других сущностей.
factory_boy
factory_boy — декларативное создание тестовых объектов и фабрик.
Funcy
Funcy — утилиты функционального программирования для коллекций и пайплайнов.
tqdm
tqdm — прогресс-бары для циклов, batch-задач и CLI-пайплайнов.
Black
Black — стандартный автоформаттер Python-кода с фиксированными правилами.
Дополнительные часто используемые библиотеки:
- SQLAlchemy — ORM и SQL-конструктор.
- Alembic — миграции схемы БД.
- Redis-py — клиент Redis.
- orjson — быстрый JSON-сериализатор.
- Typer — создание CLI на type hints.
- Click — mature-фреймворк для CLI.
- Polars — высокопроизводительная аналитика табличных данных; сравнение с Pandas, SQL и PySpark — напоминалка.
- Seaborn — статистическая визуализация поверх Matplotlib.
- XGBoost — бустинг для задач табличного ML.
- pytest-asyncio — тестирование асинхронного кода на pytest.
6. Экспериментальные и нишевые направления
Экосистема Python постоянно расширяется за счёт экспериментальных и специализированных решений, которые открывают новые области применения языка.
MicroPython и CircuitPython — это реализации Python, оптимизированные для микроконтроллеров и устройств с ограниченными ресурсами. MicroPython стремится к максимальной эффективности и минимальному размеру, тогда как CircuitPython, созданный компанией Adafruit, делает упор на удобство для новичков и образовательных целей. Обе платформы позволяют программировать железо на Python, управляя светодиодами, датчиками, моторами и другими периферийными устройствами.
В веб-разработке продолжаются попытки использовать Python на стороне клиента. Brython — это реализация Python 3, работающая в браузере и транслирующая код в JavaScript. Transcrypt — это транспайлер, преобразующий подмножество Python в читаемый JavaScript, позволяя писать клиентский код на привычном языке. Эти проекты пока не получили массового распространения, но демонстрируют стремление сообщества расширить границы Python.
В области искусственного интеллекта появились высокоуровневые фреймворки для построения приложений на основе языковых моделей. LangChain и LlamaIndex (ранее GPT Index) предоставляют абстракции для работы с внешними источниками данных, цепочками вызовов, памятью и агентами. Они упрощают создание сложных ИИ-приложений, таких как чат-боты с доступом к базе знаний, системы анализа документов или автоматизированные исследователи.
Наконец, серверная инфраструктура Python включает в себя специализированные ASGI- и WSGI-серверы. uvicorn — это быстрый ASGI-сервер на основе uvloop и httptools, часто используемый с FastAPI и Starlette. gunicorn — надёжный WSGI-HTTP-сервер, популярный в связке с Django и Flask. hypercorn — это ASGI-сервер, поддерживающий HTTP/2 и QUIC, ориентированный на современные протоколы и высокую производительность.
Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.