Топ-10 пакетов Python, которые должен знать каждый разработчик

Пакетов Python насчитывается уже больше 200 тысяч (и это если считать только те, что есть в PyPI — официальном каталоге пакетов Python). Вопрос: с учетом того, что пакетов существует великое множество, как узнать, какие из них — самые важные? Какие должен знать каждый Python-разработчик?

Мы решили помочь вам найти ответы на эти вопросы и составили список из 10 самых важных, полезных и популярных пакетов Python. С ними определенно стоит познакомиться, потому что они очень часто будут встречаться в самых разных проектах. При составлении нашего списка мы брали самые разные пакеты, служащие разным целям (а не только, скажем, для науки о данных или веб-разработки).

1. NumPy

Основные математические операции можно осуществлять и без всяких дополнительных пакетов. Но если вы будете делать какие-то более сложные вычисления, пакет NumPy очень сильно облегчит вашу программистскую жизнь.

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

NumPy — очень полезный пакет Python для самых разнообразных задач программирования, но он особенно важен, если вы собираетесь заниматься машинным обучением, поскольку он (в числе прочих) лежит в основе таких библиотек как TensorFlow.

2. Pendulum

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

Но этот модуль очень хорош для базовой работы, а вот с пакетом Pendulum вы сможете создавать куда более сложные программы, связанные с использованием дат и времени. Этот пакет более интуитивен в работе, к тому же он автоматически учитывает часовые пояса.

Что лучше всего — Pendulum написан так, чтобы с легкостью заменять datetime. То есть, если у вас есть готовый код, написанный с применением модуля datetime, вы смело можете подключать Pendulum. Практически всегда все будет продолжать отлично работать без всякого изменения кода, а вы получите дополнительный функционал, которого попросту нет в старом добром datetime.

3. Python Imaging Library

Если ваше приложение, написанное на Python, как-то взаимодействует с изображениями, вам непременно понадобится Python imaging library. Эта библиотека также известна как PIL или Pillow. С ней вам будет куда проще написать код для открытия, изменения и сохранения изображений в разных форматах.

Возможно, вы делаете с изображениями что-то более сложное. Например, работаете над распознаванием изображений (в этом случае, кстати, стоит обратить внимание на пакет OpenCV). К сожалению, с такими вещами Pillow не справится. Но для базовых операций вроде импорта, изменения и экспорта Pillow — самое подходящее решение.

4. MoviePy

MoviePy — пакет, предназначенный для работы с видео. Он имеет достаточно функций для самых распространенных задач, связанных с импортом, изменением и экспортом видеофайлов. В общем, он похож на Pillow, только предназначен для работы не с картинками, а с видео. Также он позволяет добавлять титры и поворачивать видео на 90° (если вам вдруг это понадобится).

Как и Pillow, MoviePy не предназначен для более сложных операций с данными. Если вы пишете приложение для редактирования видеофайлов, вам, вероятно, также понадобится OpenCV (этот пакет работает и с изображениями, и с видео), который сможет предоставить более мощный функционал. Но для большинства стандартных задач MoviePy вполне подходит.

5. Requests

Написать код, отправляющий HTTP-запросы, может быть довольно сложно. Это в немалой степени связано с тем, что HTTP не форматирует данные таким образом, чтобы их было легко читать людям.

Пакет Requests (его девиз — «HTTP для людей») справляется с этой проблемой, автоматизируя многие утомительные действия, которые вам пришлось бы выполнять для отправки HTTP-запросов из вашего приложения. Вам не придется добавлять строки запросов или возиться с кодировкой POST. Также этот пакет обеспечивает автоматическое сохранение соединения с HTTP-серверами (без вылетов по таймауту) — вам не придется писать для этого большое количество кода.

Короче говоря, если ваше приложение отсылает любые данные по HTTP, пакет Requests вам просто необходим.

6. Tkinter

Хотите написать на Python приложение с графическим пользовательским интерфейсом (GUI)? Есть много пакетов, способных помочь вам в этом. Но большинство разработчиков пожалуй согласятся, что из этого многообразия пакетов важнее всего Tkinter. Для создания GUI чаще всего используется именно этот фреймворк. Он привязывает Python к TK — библиотеке элементов GUI, — которая работает буквально в каждой современной операционной системе.

Если вы не являетесь убежденным приверженцем какого-то другого набора инструментов для работы с GUI, Tkinter будет лучшим началом.

7. PyQt

PyQT — еще один пакет Python для создания GUI, и тоже очень хороший. Он обеспечивает привязку к кроссплатформенному набору инструментов Qt (что и отражено в названии).

Этот пакет более мощный, чем Tkinter. То есть, если вы создаете какой-то простой пользовательский интерфейс (скажем, просто окно с несколькими кнопками и текстовыми полями), применение PyQT будет излишним. Но это хороший инструмент, если вы хотите построить сложный, многомерный GUI.

8. Pandas

Есть очень много пакетов Python, созданных для работы со сложными наборами данных. Но Pandas, несомненно, самый важный из них. Он помогает вам работать с большими датасетами и анализировать их, не изучая при этом какой-то специальный язык для обработки данных (вроде R).

Возможности Pandas, конечно, не безграничны. Он не предназначен для сложного статистического моделирования (в этом случае вам все-таки стоит изучить R или использовать другой пакет Python, например, statsmodels). Но если вам нужно обработать данные временных рядов или выполнить статистический анализ набора данных, Pandas вам поможет.

9. Pywin32

Pywin32 это обязательный спутник программирования на Python в Windows. Этот пакет обеспечивает доступ ко многим нативным функциям Windows API, позволяя, например, взаимодействовать с реестром Windows, использовать буфер обмена Windows и т. д.

Pywin32 не слишком вам поможет в создании кроссплатформенного приложения на Python, но Windows-разработчикам он может понравиться настолько, что они станут использовать его вместо нативных инструментов Windows.

10. Pytest

Независимо от сложности вашего проекта, новый код в любом случае нуждается в тестировании. Пакет Pytest предоставляет множество модулей, способных помочь вам в этом. Pytest поможет вам написать как простой модульный тест, так и более сложный функциональный.

Заключение

Если в наш список не попала ваша любимая библиотека или фреймворк Python — не обижайтесь. Экосистема Python производит так много полезных пакетов, что даже самые важные из них не поместятся в список топ-100, не говоря уже о топ-10. Пакеты, описанные в нашей статье, относятся к категории пакетов общего назначения и очень часто пригождаются при создании самых разнообразных проектов на Python.