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

от автора

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

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

tqdm

built-in: False

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

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

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

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

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 :thumbsup:', use_aliases=True))  # Habr is  print(emoji.demojize('Habr is '))  # Habr is :thumbsup: 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

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

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

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

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"))

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()

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

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')

Результат: https://youtu.be/AqGZ4JFkQTU

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.

hello

built-in: True

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

please-debug-my-code

built-in: False

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

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

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

Заключение

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


Облачные серверы от Маклауд прекрасно подходят для разработки на python.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

ссылка на оригинал статьи https://habr.com/ru/company/macloud/blog/559042/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *