30 самых полезных библиотек Python для веб-разработки в 2024 году

Обложка: 30 самых полезных библиотек Python для веб-разработки в 2024 году

Если вы только подступились к верстке своего первого сайта на Python, эта статья поможет разобраться, какие библиотеки Python и инструменты — мастхэв, и чем вообще руководствоваться при выборе инструмента.

Кстати, вы можете проверить свои знания: попробуйте угадать, для чего нужна та или иная Python-библиотека.

Гайд написан владелицей Django-сайта. Если вам интересно, как пересесть с nocode-CMS вроде WordPress на самописную админку, посмотрите эту статью.

Универсально для всех фреймворков

Даже если не все инструменты понятны и нужны сразу, сохраните этот листинг в закладки: тогда тулы вроде gunicorn станут «на вырост».

  • pillow: библиотека для работы с изображениями.
  • psycopg: один из лучших адаптеров PostgreSQL для Python.
  • python-dateutil: расширение для стандартного py-модуля datetime.
  • boostrap-icons: npm-пакет с иконками, прикручиваемый к HTML-темплейту.
  • tzdata: утилита с информацией о временных зонах.
  • urllib3: для выполнения запросов к веб-серверам.
  • requests: одна из самых популярных библиотек для HTTP-запросов на Python.
  • sqlparse: форматирование и парсинг SQL-запросов.
  • text-unidecode: транслитерация из Unicode в ASCII.
			>>> from text_unidecode import unidecode
>>> unidecode(u'какой-то текст')
... 'kakoi-to tekst'
		
  • pandas: библиотека для работы с табличными данными.
  • certbot: бесплатные SSL-сертификаты.
  • plotly: дизайнерские графики с тонкой настройкой почти любого аспекта.
  • FastAPI: современный, быстрый веб-фреймворк для создания API.
  • pytest: быстрее способа писать тесты для ваших функций просто нет.
  • gunicorn: сервер для запуска Python веб-приложений.
  • six: библиотека для совместимости кода между Python 2 и 3.
  • PyYAML: человекочитаемый формат конфигов.
			# config.yaml
server:
  host: "0.0.0.0"
  port: 8080

database:
  type: "postgresql"
  host: "localhost"
  port: 5432
  username: "db_user"
  password: "db_password"
  database_name: "mydatabase"
		

Для подобных файлов Python нужен отдельный коннектор

  • wheel: ускоряет установку библиотек и модулей.
  • charset-normalizer: управляет кодировкой текста.

Помимо прочего, обеспечивает совместимость с разными браузерами и спасает от вредоносного кода, отправляемого через формы.

  • idna: обработка доменных имен с интернациональными символами.
			>>> import idna
>>> print(idna.decode('https://xn--d1aqf.xn--p1ai/'))
... дом.рф
		
  • typing-extensions: аннотация типов для разных версий Python.
			from typing_extensions import Annotated

def greet(name: Annotated[str, "Имя"]) -> None:
    print(f"Привет, {name}")
		

Инструмент позволяет, например, на Python 2, использовать аннотацию типов крайней версии языкового пакета.

  • cryptography: шифрование, хэширование — защита ваших данных от третьих лиц.
			>>> from cryptography.hazmat.primitives import hashes
>>> digest = hashes.Hash(hashes.SHA256())
>>> digest.update(b'Сообщение для хэширования')
>>> hash_value = digest.finalize()
>>> print(f'Хэш SHA-256: {hash_value.hex()}')
		

Прочитать зашифрованное сообщение без «ключа» у хакера не получится.

  • fsspec: унифицирует обращение с файлами вне зависимости от ОС.
  • MarkupSafe: безопасное отображение HTML/XML-текста.
  • python-slugify: создание коротких дружелюбных URL.

Django-мастхэв

  • django-tailwind: интеграция CSS-фреймворка Tailwind с Django.
  • django-tinymce: интеграция WYSIWYG-редактора TinyMCE.

Вжух! И читатель увидит следующее:

  • django-orm: переключение между SQLite и PostgreSQL.
  • django-js-asset: управление зависимыми от JavaScript файлами.

Заключение

Стоит признать: подбор стека — задача не для новичков. Пока начинающий веб-разработчик только-только справляется со стандартными для сайта фичами, вроде форм обратной связи и картинками с CDN-ссылок, оперативной памяти мозга на выбор библиотек, как правило, не остается. Вы можете воспользоваться предложенными в статье общепринятыми решениями, однако функционал моего блога и вашего проекта наверняка различаются. Списка выше будет недостаточно.

В такой ситуации полезны LLM: ChatGPT и прочие ассистенты даже с меньшим числом параметров справляются с выдачей общепринятых решений «на пять». Так что начинаем с проверенного комьюнити решения по умолчанию, и только потом, когда ощутим свободу и желание экспериментировать, пробуем менять pandas на polars.

Мне не хочется обманывать новоприбывших, что переписывать под новую библиотеку весь код — нормально. Это ресурсоемко и больно. Тем более, если это ваш пет-проект, и на него приходится разыскивать время.

Если вас как веб-разработчика порадовал какой-то новый питонический инструмент, способный потеснить укоренившиеся решения, поделитесь в комментариях.