14 Python-пакетов, про которые вы скорее всего не знали

Kate

Administrator
Команда форума
Язык Python предоставляет всем пользователям возможность создавать свои пакеты и делиться ими со всем сообществом. Так появлялись очень популярные библиотеки для работы с данными (Pandas, Numpy, Matplotlib), для машинного обучения (TensorFlow, PyTorch), для веб разработки. Но есть много смешных, полезных или интересных пакетов, про которые вы вероятно никогда не слышали. Именно про них и пойдёт речь дальше.

Модули, которые не являются частью стандартной библиотеки Python, можно установить с помощью pip install <название пакета>.


Antigravity​


built-in: True


При подключении модуля antigravity в браузере открывается комикс с сайта xkcd.com (xkcd.ru — версия на русском). В нём рассказывается про то, насколько язык Python простой. Перевод с английского языка:


I wrote 20 short programs in Python yesterday.  It was wonderful.  Perl, I'm leaving you.



Приписка автора комикса: I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I'm leaving you.


tqdm​


built-in: False


Отличный инструмент для подключения диаграммы выполнения вашей программы. Название происходит от арабского слова "taqadum", что означает "прогресс".
Для создания прогресс-бара необходим лишь один вызов функции:


import tqdm

for i in tqdm(range(10000)):
...

Пример прогресс-бара:


avdkmxn5gneaw6fcyayooybd3va.gif



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


prettytable​


built-in: False


Пакет для красивого оформления и вывода таблиц. Есть поддержка заголовков столбцов, импорт из CSV и SQL. Синтаксис опять же очень простой:


from prettytable import PrettyTable

x = PrettyTable()
x.field_names = ["Country", "Capital", "is_russia"]
x.add_row(["Russia", "Moscow", True])
x.add_rows([["Argentina", "Buenos Aires", False], ["Jamaica", "Kingston", False]])
x.add_column("Starts with A", [False, True, False])

print(x)

Вывод:


+-----------+--------------+-----------+---------------+
| Country | Capital | is_russia | Starts with A |
+-----------+--------------+-----------+---------------+
| Russia | Moscow | True | False |
| Argentina | Buenos Aires | False | True |
| Jamaica | Kingston | False | False |
+-----------+--------------+-----------+---------------+

Подробнее можно почитать на странице проекта.


emoji​


built-in: False


Модуль позволяет получить эмодзи по его текстовому названию. Может быть полезно в проектах, где используются эмодзи, но не хочется хранить их как символ, потому что IDE может плохо их отображать. При этом по названию будет понятен смысл смайлика. Также при написании приложения для обмена сообщениями это будет удобной фичей для пользователей.
Есть поддержка нескольких языков и синонимов (алиасов).


import emoji

print(emoji.emojize('Habr is 👍', use_aliases=True)) # Habr is
print(emoji.demojize('Habr is ')) # Habr is 👍
print(emoji.demojize('Habr es ', language='es')) # Habr es :pulgar_hacia_arriba:

Шпаргалку по названиям эмодзи можно посмотреть здесь


uuid​


built-in: True


Пакет для генерации случайных id, поддерживает разные модели генерации. Например, uuid4 генерирует рандомный id, а uuid3 на основе md5 от названия объекта, для которого генерируется id. Как всегда, подробности можно найти в документации.


import uuid

print(uuid.uuid4()) # example: 2d8959d3-a5b3-42ef-8723-b4f4532f6d14
print(uuid.uuid3(uuid.NAMESPACE_URL, "https://habr.com/ru/users/otter18/")) # e521cf18-5147-3137-9ca5-51bcbebe1b74

freegames​


built-in: False


Хотите поиграть на рабочем месте, но игры слишком много весят? Или вы боитесь, что босс увидит, чем вы занимаетесь? Выход есть!


python -m pip install freegames

Теперь вы можете запустить любую игру из списка:


ant
bagels
bounce
cannon
connect
crypto
fidget
flappy
guess
life
maze
memory
minesweeper
pacman
paint
pong
simonsays
snake
tictactoe
tiles
tron

Для запуска игры snake используйте команду


python -m freegames.snake

Крестики-нолики:


xghbyla_cjw7u4_1v77pfy47yds.png



Игра на запоминание чисел:


yuuikdmhjkccxumltsvdhgbiixc.png



Все игры сделаны с помощью черепашки-рисовальщика.


howdoi​


built-in: False


Ещё один прекрасный модуль, который улучшит вашу жизнь. Теперь вам не надо открывать несколько вопросов на StackOverflow, на которые нет понятного ответа с кодом. Вместо этого для вас решение найдёт howdoi:


$ howdoi install all python modules in project
pip install -r requirements.txt

Также есть поддержка подсветки, определённых сайтов и поисковых систем.


pyjokes​


built-in: False


Если в вашей крови течёт PEP, а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes.


import pyjokes

print(pyjokes.get_joke())

Также есть отдельная категория с шутками Чака Норриса. Don't worry about tests, Chuck Norris's test cases cover your code too.


Fabulous​


built-in: False


Вам не достаточно красивого вывода таблиц в консоль? А как насчёт вывода текста с тенями или даже картинок? Теперь это возможно! (Использовать только в небольших количествах во избежание перелома чувства прекрасного)


from fabulous import text, image
print(text.Text("Барсук!", color='#ff8c00', shadow=True, skew=5))
print(image.Image("барсук.png"))

b0tuc1ht24mfhjoazcuzqjfbcdu.png



art​


built-in: False


Всё, что вам может понадобится для вывода красивых надписей или артов в терминал.


import art

print(art.randart()) # \m/(-_-)\m/
art.tprint("Habr", "mix") # надпись Habr буквами из разных языков и шрифтов, которые могут не читаться вашими устройствами

Мне особенно нравится вывод больших букв:


import art

print(art.text2art("Habr", font='block'))

.----------------. .----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. |
| | ____ ____ | || | __ | || | ______ | || | _______ | |
| | |_ || _| | || | / \ | || | |_ _ \ | || | |_ __ \ | |
| | | |__| | | || | / /\ \ | || | | |_) | | || | | |__) | | |
| | | __ | | || | / ____ \ | || | | __'. | || | | __ / | |
| | _| | | |_ | || | _/ / \ \_ | || | _| |__) | | || | _| | \ \_ | |
| | |____||____| | || ||____| |____|| || | |_______/ | || | |____| |___| | |
| | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------'

Полный список возможностей можно увидеть в документации.


pyperclip​


built-in: False


Модуль для работы с буфером обмена. Подобные возможности также есть в модуле Tkinter (и я пользовался этим способом, потому что он выдавался в Гугле первым):


from tkinter import Tk

tk = Tk()
tk.withdraw()
tk.clipboard_clear()
tk.clipboard_append('New clipboard comtent')
tk.update()
tk.destroy()

Но pyperclip делает жизнь проще:


import pyperclip
pyperclip.copy('Habr is the best!')
pyperclip.paste()

Под капотом стоит обработка версии системы и поиск соответствующего способа работы с буфером обмена. Например, с помощью командной строки.


hello​


built-in: True


Все же помнят свой первый вывод Hello World!? Теперь это сделать ещё легче, надо просто написать в консоли import __hello__.


moviepy​


built-in: False


Пакет для редактирования видео. Имеет такие полезные функции как: обрезка, добавления текста поверх ихображения, поворот видео, создания GIF, коррекция цвета и много другое.


Одним словом, если вы хотите автоматизировать простую работу над видео, то это прекрасный инструмент для ваших целей.


Пример из официальной документации: наложение двух видеофайлов и движущегося текста


from moviepy.editor import *

# импорт основного видеоряда
ukulele = VideoFileClip("ukulele.MOV", audio=False).subclip(60+33, 60+50).crop(486, 180, 1196, 570)
w,h = moviesize = ukulele.size

# импорт пианино
piano = (VideoFileClip("piano.mp4",audio=False).subclip(30,50).resize((w/3,h/3)).margin( 6,color=(255,255,255).margin( bottom=20, right=20, opacity=0).set_pos(('right','bottom')) )

# создание текста
txt = TextClip("V. Zulkoninov - Ukulele Sonata", font='Amiri-regular', color='white',fontsize=24)
txt_col = txt.on_color(size=(ukulele.w + txt.w,txt.h-10), color=(0,0,0), pos=(6,'center'), col_opacity=0.6)

# создание траектории движения текста: зависимость координаты от времени
txt_mov = txt_col.set_pos(lambda t: (max(w/30,int(w-0.5*w*t)), max(5*h/6,int(100*t))))

# генерация финального результата
final = CompositeVideoClip([ukulele,txt_mov,piano])
final.subclip(0,5).write_videofile(".avi",fps=24,codec='libx264')

Результат:


please-debug-my-code​


built-in: False


И завершает этот список модуль, сделанный мной. В нём живёт маленький помощник, который отдебагает вам любой код.


import please_debug_my_code

print(please_debug_my_code.please_help("code", "..."))

Только он иногда не в настроении, и его надо хорошо попросить (или прочитать исходный код и понять, что он любит).


Заключение​


Библиотека pypi содежит более 307 тысяч проектов, среди которых вы можете найти подходящий пакет в любой жизненной ситуации.


Источник статьи: https://habr.com/ru/company/macloud/blog/559042/
 
Сверху