[Перевод] 30 лучших Python-проектов на GitHub на начало 2022 года
Репозитории с наибольшим количеством звезд
Наверняка многим из вас любопытно было бы узнать, какие Python-проекты являются самыми популярными на начало 2022 года. GitHub, безусловно, лучшее место для получения этой статистики. Пусть здесь можно найти не все проекты, но ему нет достойной альтернативы.
7 репозиториев, повышающих производительность;
3 репозитория с фреймворками;
5 репозиториев, которые облегчают машинное обучение;
4 репозитория, которые облегчают реальную жизнь;
6 репозиториев, которые собирают и систематизируют полезную информацию;
5 репозиториев, которые чему-то учат.
Теперь давайте посмотрим, как мы можем получить ранжированный список из GitHub API с помощью нескольких строк кода.
API, поиск и GitHub
Официальную документацию по API можно найти на этой странице. Я не буду её пересказывать, давайте сразу к делу. Самое прекрасное, что нам не нужно регистрироваться или запрашивать ключ API для использования этого способа. Конечно, у него есть ограничение по скорости — до 10 запросов в минуту, но этого вполне достаточно для тестирования кода и подключения ранжированного списка.
Прежде всего используем requests-модуль Python. Наверняка вы с ним знакомы. Также возьмём Pandas для преобразования данных.
import requests
import pandas as pd
URL-адрес https://api.github.com/search/repositories строится на основе документации API. Поскольку мы ищем только проекты на основе Python, указываем аргумент language:python
в запросе. Затем добавляем сортировку результатов поиска по количеству звёзд и упорядочиваем по убыванию.
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars&order=desc'
Затем используем requests для обращения к API. Для этого подойдёт метод GET. Потом можно преобразовать результаты в словарь Python.
res = requests.get(url)
res_dict = res.json()
Все результаты поиска будут в массиве с ключом «items». Размер страницы по умолчанию равен 30, так что мы сразу видим 30 лучших репозиториев.
repos = res_dict['items']
len(repos)
Кстати, на момент отправки запроса в общей сложности было 8 046 758 репозиториев Python.
Теперь давайте преобразуем массив элементов в фрейм данных Pandas.
repo_df = pd.DataFrame(repos)
Теперь удаляем все столбцы, которые не нужны, а ещё добавим столбец под названием year_on_github
, чтобы узнать, когда этот проект был создан на GitHub.
repo_df = repo_df[['name', 'full_name', 'html_url', 'created_at', 'stargazers_count', 'watchers', 'forks', 'open_issues']]
repo_df['created_at'] = pd.to_datetime(repo_df['created_at'])
repo_df['created_year'] = repo_df['created_at'].dt.year
repo_df['years_on_github'] = 2022 - repo_df['created_at'].dt.year
Вот полный список 30 лучших репозиториев.
Эти проекты облегчают повседневную работу и повышают производительность, например, добавляют некоторые полезные функции.
1. thefxxk (6 место, 65 988 звезд)
Этот инструмент может помочь нам исправить ошибки в предыдущей команде, когда мы используем консоль, например, в среде Linux или GitBash.
2. httpie (9 место, 53 255 звезд)
HTTPie — это HTTP-клиент командной строки. Его цель — сделать взаимодействие CLI с веб-сервисами максимально удобным для человека. HTTPie предназначен для тестирования, отладки и общего взаимодействия с API и HTTP-серверами. Команды http и https позволяют создавать и отправлять произвольные HTTP-запросы. Они используют простой и естественный синтаксис и обеспечивают форматированный и подсвеченный вывод.
3. you-get (12-е место, 42 791 звезда)
Это крошечная утилита командной строки для загрузки мультимедийного содержимого (видео, аудио, изображений) из интернета, если нет другого удобного способа сделать это.
4. LocalStack (16 место, 38 008 звёзд)
Этот репозиторий представляет собой эмулятор облачного сервиса, который запускается в одном контейнере на вашем ноутбуке или в вашей среде CI. С помощью LocalStack вы можете запускать приложения на своём локальном компьютере, не подключаясь к удаленному поставщику облачных услуг! Независимо от того, тестируете ли вы сложные приложения CDK или конфигурации Terraform или только начинаете изучать сервисы облачных провайдеров, LocalStack помогает ускорить и упростить рабочий процесс тестирования и разработки.
5. Shadowsocks (20-е место, 33 099 звёзд)
Shadowsocks — это бесплатный проект протокола шифрования с открытым исходным кодом, который широко используется в Китае для обхода интернет-цензуры. Репозиторий удалили из -за нарушения правил сервиса к моменту написания статьи.
6. rich (23-е место, 32 075 звёзд)
Этот репозиторий упрощает добавление цветов и стилей к выводу терминала. Он также может отображать красивые таблицы, прогресс-бары, делать синтаксическую подсветку кода, трейсбеки и многое другое — прямо из коробки.
7. certbot (30-е место, 28 587 звёзд)
Certbot является частью усилий EFF по шифрованию всего интернета. Безопасная связь в интернете основана на протоколе HTTPS, который требует использования цифрового сертификата, позволяющего браузерам проверять подлинность веб-серверов. Веб-серверы получают свои сертификаты от доверенных третьих сторон, называемых центрами сертификации (ЦС). Certbot — это простой в использовании клиент, который извлекает сертификат из Let«s Encrypt — открытого центра сертификации, запущенного EFF, Mozilla и другими — и развертывает его на веб-сервере.
Репозитории с фреймворками
Все эти репозитории представляют собой очень известные фреймворки, предназначенные либо для веб-разработки, либо для разработки другого программного обеспечения.
1. flask (7 место, 57 584 звезды)
Думаю, не нужно долго распинаться о том, что это. Если вы используете Python для веб-разработки, вы наверняка когда-либо использовали flask или, по крайней мере, знаете его.
2. scrapy (14 рейтинг, 42 471 звезда)
Это фреймворк, который необходимо изучить, если вы хотите использовать Python для парсинга веб-страниц. Он упрощает и автоматизирует работу по извлечению информации с веб-страниц. Используется для сканирования сайтов и извлечения структурированных данных с их страниц. Его можно использовать для самых разных целей, от интеллектуального анализа данных до мониторинга и автоматизированного тестирования.
3. fastapi (15 рейтинг, 40 363 звезды)
Ещё один популярный фреймворк для бэкенд-разработки. Его цель состоит в том, чтобы использовать наименьшее количество кода для написания обычных веб-API. Если ваш бэкэнд не слишком сложен, используйте его.
Репозитории, облегчающие машинное обучение
1. models (5 место, 72 417 звёзд)
Если вы слышали о машинном обучении с использованием Python, то наверняка что-нибудь слышали и о TensorFlow. Этот репозиторий также называется «TensorFlow Modul Garden». Он организует модели машинного обучения и реализует их с помощью TensorFlow с примерами. Модели могут быть официально от TensorFlow, от некоторых известных исследовательских проектов или коммьюнити. Они могут экономить время, когда нужно использовать любые модели машинного обучения в TensorFlow.
2. keras (8-е место, 53 638 звёзд)
Очень популярный фреймворк машинного обучения на Python. Он предоставляет множество высокоуровневых API-интерфейсов, которые позволяют специалисту по обработке данных обучать deep learning модель с наименьшим с наименьшим количеством кода.
3. Face_recognition (13 рейтингов, 42 762 звезды)
Как следует из названия, этот проект может распознавать лица и управлять ими с помощью Python или командной строки. Утверждается, что это самая простая в мире библиотека распознавания лиц. Просто добавьте изображение с человеческими лицами, оно идентифицирует и найдет его. Затем вы даже можете изменить его, используя некоторые готовые функции.
4. Real-Time-Voice-Cloning (21-е место, 32 607 звёзд)
Я бы скорее поместил это в категорию машинного обучения, так как это потрясающий проект, но важно, чтобы им не злоупотребляли. По сути, он может «выучить» чей-то голос по 5-секундной записи речи, а затем использовать «выученный» голос, чтобы говорить что угодно. Ниже демонстрационное видео от автора.
5. DeepFaceLab (27 место, 30 651 звезда)
Если вы видели «дипфейковые» ролики, скорее всего, они созданы этим на базе этого проекта. Он запоминает человеческое лицо и «имплантирует» его в другое видео, чтобы заменить исходное лицо на то, которое нужно добавить. Может быть много этических проблем, но этот проект действительно потрясающий.
Репозитории, которые облегчают реальную жизнь
Эти репозитории написаны на Python, но используются в реальной жизни. Они могут либо сэкономить наше время, либо позволить нам делать какие-то интересные штуки.
1. core (11 место, 48 763 звезды)
Этот репозиторий представляет собой домашнюю автоматизацию с открытым исходным кодом, которая ставит на первое место локальный контроль и конфиденциальность. Работает благодаря огромному коммьюнити экспертов и энтузиастов DIY. Идеально подходит для работы на Raspberry Pi или локальном сервере. Используется во многих успешных продуктах домашней автоматизации, таких как Amazon Alexa и Google Cast.
2. openpilot (24 место, 31 998 звёзд)
Этот репозиторий представляет собой систему помощи водителю с открытым исходным кодом. Выполняет функции адаптивного круиз-контроля (ACC), автоматического центрирования полосы движения (ALC), предупреждения о лобовом столкновении (FCW) и предупреждения о выходе из полосы движения (LDW) для растущего числа поддерживаемых марок, моделей и годов выпуска автомобилей. Однако вам нужно купить их продукт и установить его на свой автомобиль. Это не совсем DIY, но жизнь действительно облегчает.
3. XX-Net (26 место, 31 002 звезды)
Это прокси-инструмент для обхода китайского «Великого файерволла», позволяющий китайским интернет-пользователям посещать сайты вроде YouTube и Facebook.
4. 12306 (28 место, 30 401 звезда)
12306 — это номер горячей линии для бронирования билетов на поезд в Китае, он также использовался в качестве доменного имени, когда они запустили онлайн-бронирование около 15 лет назад. Этот репозиторий представляет собой инструмент автоматического бронирования билетов, потому что мест может не хватать в часы пик, и забронировать их довольно сложно. Вот так разработчики решают проблемы :).
Репозитории, которые собирают и систематизируют полезную информацию
1. public-apis (1-е место, 173 658 звёзд)
В этом репозитории собраны сотни бесплатных API, которые можно использовать для разработки программного обеспечения и веб-приложений. Многие из них очень интересны, например Fun Facts, который случайным образом генерирует забавный факт каждый раз, когда мы его вызываем. Есть также несколько очень полезных API, таких как Colormind API, которые можно использовать для создания великолепных цветовых кодов, которые потенциально можно использовать в визуализации данных. Кроме того, существует множество открытых государственных API, которые можно использовать для получения статистических данных о стране.
2. awesome-python (4 место, 112 609 звёзд)
В этом репозитории собраны сотни других «потрясающих» Python-проектов с GitHub. Проекты разбиты по категориям, чтобы было проще найти нужный.
3. awesome-machine-learningе (10-е место, 52 487 звёзд)
Как и в предыдущем случае, в этом репозитории собраны проекты машинного обучения.
4. funNLP (17 место, 35 922 звезды)
Это китайский репозиторий, хотя он будет понятен и англоязычной аудитории. Однако в документации нет англоязычной версии. Он предоставляет словари НЛП, (чувствительные слова, наборы инструментов НЛП и некоторые учебные материалы).
5. interview_internal_reference (19 рейтинг, 33 135 звёзд)
Ещё один китайский репозиторий, в котором собраны частые вопросы на интервью от таких известных компаний, как Huawei. Он также предоставляет базовые знания, которые вы должны знать как разработчик данных, такие как алгоритмы и принципы проектирования баз данных.
6. Deep-Learning-Papers-Reading-Roadmap (24-е место, 31 521 звезда)
Если вы хотите изучить машинное обучение с нуля, этот репозиторий может стать хорошим началом. Он рисует «дорожную карту» развития машинного обучения в истории, используя научные статьи.
Репозитории, которые чему-то учат
Эти репозитории не предназначены для кода. Их можно рассматривать как «книгу» с открытым исходным кодом. Информация, которую они содержат, может быть использована для изучения чего-либо.
1. system-design-primer (2-е место, 157 775 звёзд)
Этот репозиторий — настоящее сокровище для тех, кто хочет начать карьеру системного архитектора. Он знакомит с множеством полезных концепций. Вы можете найти почти всё, что хотите знать, например, когда использовать SQL или NoSQL, как проектировать распределенную реляционную базу данных и что такое обратный прокси.
2. Python-100-Days (3-е место, 113 812 звёзд)
Это репозиторий на китайском языке. В нём знания по программированию на Python разделены на 100 частей, чтобы учащиеся могли пройти весь курс за 100 дней, если они будут упорно изучать по одной части в день. К сожалению, он не переведен на английский язык.
3. PayloadsAllTheThings (18 рейтингов, 33 407 звёзд)
В этом репозитории представлен список полезных нагрузок и средств обхода безопасности веб-приложений. Если вы хотите быть опытным веб-разработчиком, который хочет избежать популярных дыр и ловушек в системе безопасности, этот материал является обязательным для изучения. Почти все концепции реализованы на примере Python.
4. AiLearning (22-е место, 32 517 звёзд)
Репозиторий на китайском языке, обучающий от основ Python до фреймворка PyTorch ML.
5. d2l-zh (29 место, 29, 618 звёзд)
Книга называется «Погружение в глубокое обучение». Хотя сам репозиторий китайский, английскую версию (исходную версию) можно найти без особого труда.
Заключение
Очевидно, что рейтинг может не совсем верно отражать реальную ценность того или иного репозитория. Это сухие статистические данные, основанные на количестве закладок и оценок. А как известно, есть ложь, большая ложь и статистика. Тем не менее, кое-что интересное найти в этом списке можно.
Надеюсь, и вы тоже найдёте что-то для себя.
Что ещё интересного есть в блоге Cloud4Y
→ История Game Genie — чит-устройства, которое всколыхнуло мир
→ Как я случайно заблокировал 10 000 телефонов в Южной Америке
→ Странные продукты Apple
→ WD-40: средство, которое может почти всё
→ Как ИИ учится рисовать аниме
Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу.