Создание библиотеки Python: полный гайд
Это моя первая статья на Хабр’е и в ней я вам расскажу о том, как создать свою библиотеку Python и загрузить её на PyPi. Давайте начнём.

Капельку определений
PyPI — каталог программного обеспечения, написанного на языке программирования Python. Фактически это хранилище открытых библиотек для языка Python. Каждый может скачать и использовать библиотеку или создать и загрузить свою. По состоянию на февраль 2020 года содержит более 216 000 пакетов.
Каждый раз, когда вы используете команду pip install вы загружаете модуль с PyPi. Ок, я думаю, что с этим разобрались, идем дальше.
Для чего вам нужна своя библиотека?
- Во-первых, во время создания собственной Python библиотеки вы можете получить опыт, который может пригодится вам в дальнейшем.
- Во-вторых, вы можете поместить в библиотеку только нужные вам функции, которые могут облегчить жизнь вам и возможно другим программистам.
- В-третьих, это весело и интересно.
Что вам нужно для создания библиотеки?
- Код с функциями, которые вы планируете использовать.
- Набор пакетов для создания и публикации (setuptools, wheel и twine).
- Аккаунт PyPI (и его API токен — опционально, но об этом позже).
- Желание и терпение.
Подготовка
Ок, мы разобрались с тем, что нам нужно для создания библиотеки, теперь давайте по порядку, начнём с кода и его грамотного оформления.
Для начала, после того как у вас появилась идея, реализуйте всё в отдельном файле и уже потом разбейте на соответствующую структуру (об этом позже). Для примера я буду использовать код класса быстрого взаимодействия с файлами и библиотеку PyDeepLib (возможно позже я напишу об этом статью). Вы можете установить каждую из библиотек командами pip install PyDeepLib и pip install speedfile соответственно. Проекты так же доступны на GitHub (PyDeepLib, speedfile).
Итак, давайте начнём с установки необходимых нам библиотек. Откройте PyCharm (я рекомендую вам использовать именно его, но если у вас его нет, то можете использовать любой другой редактор кода). Создайте новый проект с виртуальным окружением и установите пакеты о которых говорилось раньше ( setuptools , wheel и twine ), используя команду pip install setuptools wheel twine.
Теперь создадим корневую папку для нашего проекта, а в ней файлы setup.py , setup.cfg и папку с таким же названием как корневая.
Файлы нашего проекта на этом этапе должны выглядеть вот так:

Как вы можете заметить я поместил все модули проекта в папку PyDeepLib, её название обязательно должно совпадать с корневой.
Регистрация на PyPi
Я не очень хочу подробно на этом останавливаться, но я это сделаю:
Для регистрации на PyPi вам нежно перейти на сайт pypi.org и нажать на кнопку зарегистрироваться:

После этого все стандартно:

Имя, почта, username и пароль. Я думаю вы с этим справитесь.
Файлы setup.py и setup.cfg
Теперь займёмся кодом, который будет устанавливать нашу библиотеку. Для начала откройте файл setup.py . Теперь напишем в него такой код:
from setuptools import setup, find_packages def readme(): with open('README.md', 'r') as f: return f.read() setup( name='speedfile', version='0.0.1', author='yarik_g', author_email='example@gmail.com', description='This is the simplest module for quick work with files.', long_description=readme(), long_description_content_type='text/markdown', url='your_url', packages=find_packages(), install_requires=['requests>=2.25.1'], classifiers=[ 'Programming Language :: Python :: 3.11', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent' ], keywords='files speedfiles ', project_urls=< 'GitHub': 'your_github' >, python_requires='>=3.6' )
Итак, сначала мы создаём функцию readme , она нужна для чтения README.md файла (я расскажу как создать его максимально быстро и просто позже). И затем мы вызываем функцию setup , в которую нам надо передать некоторое число параметров, о них поговорим подробнее:
- name — название вашей библиотеки.
- version — версия. Когда будете обновлять библиотеку, версию обязательно надо изменить.
- author — автор проекта
- author_email — электронная почта (желательно та, на которую регистрировали аккаунт на PyPi).
- description — короткое описание.
- long_description — подробное описание пакета. В данном случае получение содержимого файла README.md.
- long_description_content_type — разметка, используемая в подробном описании. У нас — markdown.
- url — ссылка на страницу пакета. Я там указал ссылку на GitHub проекта.
- packages — список пакетов, которые должны опубликоваться. Для удобства я использовал функцию find_packages.
- install_requires — дополнительные библиотеки, которые будут установлены вместе с пакетом.
- classifiers — метаданные о пакете.
- keywords — ключевые слова (через пробел).
- project_urls — дополнительные ссылки пакета.
- python_requires — требуемая версия Python.
Отлично, надеюсь, что с этом мы разобрались. Теперь надо отредактировать файл setup.cfg . Если коротеничко, открываем его и вставляем это:
[egg_info] tag_build = tag_date = 0
В нашем случае проект очень простой и не требует никакой дополнительной конфигурации.
Основные файлы
Итак, давайте снова вернёмся к файлам проекта PyDeepLib, и рассмотрим устройство файлов модуля.

В папке с кодом проекта обязательно должен быть файл с названием __init__.py . Система ищет его по умолчанию и в нём обычно просто импортируют остальные модули. Вот пример того, как это может выглядеть:

Как видите в нём почти нет кода, только import’ы, весь остальной код же разбит по отдельным файлам. Это намного удобнее чем держать весь код в одном файле, однако к примеру в проекте speedfile весь код располагался в этом основном файле, но там он был небольшим и запутаться там было сложно:

Я думаю, что это всё что надо знать про разбиение кода на модули.
Создание README файла. Красиво и быстро.
У каждой библиотеки должна быть своя документация или хотя-бы описание. Обычно для этого используют README.md файлы. Логично предположить, что для полноты картины нам тоже следует сделать такой файл для библиотеки. Для создания .md файла мы будем использовать редактор markdown файлов, с говорящим названием MarkDownPad2.
Итак, для начало надо скачать редактор (при желании этот пункт можно пропустить. Вы можете редактировать .md файлы прямо в PyCharm или в любом текстовом редакторе, сохранив файл с соответствующим расширением).
Переходим на сайт markdownpad.com и видим, что существует две версии этого редактора, markdownpad free и markdownpad pro. Для наших задач нам вполне хватит бесплатной версии, поэтому жмём на кнопку скачать:

После этого начнётся загрузка и потом останется только установить редактор. Я думаю что вы с этим справитесь, но если что, то на сайте есть инструкция:

Ок, надеюсь что вы установили редактор. Теперь давайте его запустим:

Фактически, типичное окно редактора текста/кода, каковым MarkDownPad фактически и является. Дальше принцип простой: просто пишем в файл всё то, что вам необходимо иметь в README файле для вашего проекта и применяете инструменты форматирования, такие как: код, цитата, ссылка, заголовок, список и т.д. Я думаю, что самостоятельно разобраться с markdown разметкой будет не очень сложно, но если что, то вот вам полезная статья с наглядным руководством по markdown.
Для примера я просто дам вам код README.md файла библиотеки speedfile:
# Speed File Library # ## What is this? ## The module allows you to work with files in just one line of code, without the need to manually open and close the file each time ## Quick Guide ## The module is based on the following structure: f = open('data.txt') data = f.readlines() f.close() Which Python provides by standard. ---------- ### Using ### Using the library is as simple and convenient as possible: Let's import it first: First, import everything from the library (use the `from `. ` import *` construct). Examples of all operations: Writing the contents of an entire file to a variable using the `read()` function: temp = File(path='test.txt').read() Writing the contents of an entire file to a variable line by line using the `readlines()` function: temp = File(path='test.txt').readlines() Write only the first line from a file using the `readline()` function: temp = File(path='test.txt').readline() Writing data from a variable to a file using write() (overwriting or creating a file): temp = "Test data" File(path='test.txt', data=temp).write() Adding data from a variable to a file using write() (or creating a file): temp = "Test data" File(path='test.txt', data=temp).add() ---------- ## Developer ## My site: [link](https://y-a-r-i-k.github.io/)
И то, как он выглядит на GitHub:

Я надеюсь, вы здесь разберётесь)).
Публикация пакета
Ок, если вы выполнили все предшествующие шаги, но вы готовы к публикации пакета. Итак, переходим к делу:
Открываем терминал или используем встроенный в PyCharm (или редактор кода, который вы используете). Переходим в корневую директорию проекта и пишем:
python setup.py sdist bdist_wheel
После этого создадутся несколько новых папок. Теперь мы готовы к собственно загрузке модуля на PyPi. Пишем это в терминал:
twine upload --repository pypi dist/*
После этого вас попросят ввести ваш usrename и пароль. И на этом моменте хотелось бы остановиться подробнее. Когда вы будете регистрироваться на PyPi вас скорее всего попросят (в добровольно-принудительном порядке) подключить второй фактор защиты. Если вы это уже сделали, то просто указать username и пароль у вас не получится, это вызовет ошибку.
Как же это решить? Очень просто. Вам нужно получить ваш API токен для PyPi.
- Переходим в настройки учётной записи:

- Крутим вниз до пункта с API-токенами и жмём добавить токен:

- Далее вас попросят назвать токен и выбрать область его действия:

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

Итак, обратно выгрузке проекта: теперь в поле для ввода username вам надо указать __token__ а туда где должен быть пароль — ваш API-токен (рекомендую использовать пункт paste или вставить из контекстного меню, так так Ctrl + V может сработать не корректно). После этого жмём Enter и ждём. После завершения загрузки вам дадут ссылку на страницу с вашей библиотекой.
Страница будет выглядеть стандартно, например вот страница PyDeepLib:

Ну, и на этом всё, поздравляю! Вы создали и загрузили свою первую библиотеку на PyPi.
От автора:
Спасибо, что дочитали статью до конца, надеюсь она была вам полезна и сэкономила вам время. Если хотите повлиять на выход дальнейших статей, то можете подписаться на мой telegram-канал, там в том числе будут опросы касаемо выходов новых статей. Если хотите со мной связаться или предложить тему для статьи — мои контакты есть на сайте.
Ещё раз спасибо, что дочитали до сюда!
Как создать и использовать динамические библиотеки в Python
Узнайте, как создавать и использовать динамические библиотеки в Python для повышения эффективности и организации кода.
Алексей Кодов
Автор статьи
23 июня 2023 в 19:01
Динамические библиотеки являются важным элементом в программировании, так как они позволяют разделять и повторно использовать код между различными проектами. В этой статье мы рассмотрим, как создать и использовать динамические библиотеки в Python.
Создание динамической библиотеки
Для начала, создадим простую функцию, которую мы хотим разместить в динамической библиотеке. Вот пример функции, которая возвращает сумму двух чисел:
def add(a, b): return a + b
Теперь, сохраним эту функцию в файле с именем my_library.py . Этот файл будет нашей динамической библиотекой.
Использование динамической библиотеки
Чтобы использовать функцию add из нашей динамической библиотеки my_library.py , нужно импортировать ее в другой файл. Вот пример, как это сделать:
from my_library import add result = add(3, 5) print(result) # Вывод: 8
В этом примере мы импортировали функцию add из библиотеки my_library и использовали ее для сложения двух чисел.
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

Управление зависимостями
Важным аспектом работы с динамическими библиотеками является управление зависимостями. Если ваша библиотека зависит от других библиотек, вам необходимо указать это в файле requirements.txt .
Пример содержимого файла requirements.txt :
numpy==1.19.2 pandas==1.1.3
Таким образом, другие разработчики смогут легко установить все необходимые зависимости, используя команду:
pip install -r requirements.txt
Вывод
В этой статье мы узнали, как создать и использовать динамические библиотеки в Python. Это полезный инструмент для организации и повторного использования кода в ваших проектах. Не забывайте структурировать свои библиотеки, управлять зависимостями и использовать хорошие практики программирования!
Если вам нужна дополнительная помощь или обучение по работе с Python, рекомендуем обратиться в онлайн-школу.
Самые популярные библиотеки Python


Библиотеки в программировании: мощный иструмент для создания чистого кода

Моё мнение про Python

IDE и редакторы кода для Python

Php vs Python. Что выбрать?
Python — простой и гибкий язык программирования, но его настоящая сила заключается в его библиотеках. Библиотеки Python представляют собой ценные инструменты, которые значительно упрощают разработку программного обеспечения. Они предлагают набор готовых модулей и функций, которые помогают решать различные задачи, от создания графиков и игр до парсинга веб-страниц. В этой статье мы рассмотрим важность и применение библиотек Python, а также научимся устанавливать и использовать их в своих проектах.
Обзор популярных библиотек Python

Python предлагает огромное количество библиотек, которые позволяют сделать жизнь программистов проще и интереснее. Давайте рассмотрим некоторые из них и их применение:
- NumPy — для работы с многомерными массивами и выполнения математических операций.
- Pandas — предоставляет структуры данных, такие как DataFrame, которые позволяют нам удобно обрабатывать, анализировать и манипулировать таблицами данных.
- Matplotlib — если вы хотите создать красивые графики и визуализации.
- TensorFlow — если вы хотите погрузиться в мир машинного обучения и создания нейронных сетей.
- Beautiful Soup — если вам нужно извлечь данные из HTML или XML файлов.
- Pygame — если вы мечтаете о создании своей собственной игры.
Это лишь некоторые из популярных библиотек Python. Всего их гораздо больше, и каждая из них предлагает свои уникальные возможности и применение.
Установка библиотек Python
Установка библиотек Python — достаточно простой процесс:
- Убедитесь, что у вас установлен Python на компьютере. Если нет, загрузите и установите его с официального сайта.
- Откройте командную строку или терминал.
- Введите команду «pip install имя_библиотеки» для установки нужной библиотеки. Например, «pip install numpy» для установки NumPy. Нажмите Enter и дождитесь завершения установки.
- Если у вас есть файл с зависимостями (requirements.txt), используйте команду «pip install -r requirements.txt», чтобы установить все библиотеки из файла.
- Чтобы установить конкретную версию библиотеки, укажите ее в команде установки. Например, «pip install numpy==1.19.2» установит версию 1.19.2 NumPy.
Теперь вы знаете, как установить библиотеки Python. Вы можете повторить эти шаги для установки любых библиотек, которые вам необходимы для вашего проекта.
Приглашаем Вас на курс Python Start с нуля: Онлайн обучение
Кому подходит этот курс:
- Для тех, кто мечтает стать разработчиком Python, даже без опыта.
- Для всех, кто хочет создавать программы и приложения.
Начальные требования: Свободное владение компьютером и английский на уровне чтения.
Длительность: 2-4 недели.
Стоимость курса: 2 450 грн / 80 USD
Бонус: Скидка -10% на первый месяц менторинга Python после прохождения курса Python Start.
Регистрируйтесь сегодня и начните свой путь в мире Python!
Библиотеки для работы с графикой
Если вы хотите добавить вау-эффекты к вашим проектам или создать впечатляющие визуализации данных, библиотеки для работы с графикой в Python помогут вам в этом. Предлагаем несколько популярных библиотек и примеры их использования:
- Matplotlib — популярная библиотека для графиков и визуализаций в Python. Она предлагает разнообразные стили и типы графиков: линейные, столбчатые, круговые диаграммы, тепловые карты и другие. Вы можете настраивать цвета, метки и оси для создания профессиональных графиков. Например, вы можете отобразить график продаж по месяцам или визуализировать распределение данных. Также можно создать столбчатую диаграмму для отображения доходов разных отделов компании.
- Seaborn — библиотека, основанная на Matplotlib, предлагает удобные функции для создания стильных и информативных графиков. Она включает готовые темы оформления, делающие графики привлекательными и профессиональными. Также в Seaborn есть специальные функции для статистических графиков, включая диаграммы разброса и ящики с усами. Используя Seaborn и ящики с усами, вы сможете сравнивать доходы между группами клиентов и выявлять закономерности и различия в их распределении. Это полезно при принятии маркетинговых решений, например, анализе доходов по сегментам клиентов и определении наиболее привлекательных групп для целевых маркетинговых стратегий.
- Plotly — библиотека, предлагающая интерактивные графики и визуализации, встраиваемые в веб-страницы и интерактивные приложения. Она поддерживает различные типы графиков: линейные, столбчатые, разброса, поверхности и др. Вы можете добавлять интерактивные элементы, такие как навигация, выбор данных и инструменты масштабирования. Например, можно создать интерактивную карту с точками, представляющими города, а цвет каждой точки будет отражать среднюю температуру. Пользователи смогут навести курсор, чтобы получить подробную информацию о температуре в каждом городе.

From Zero to Hero
- Pillow — предоставляет возможности для работы с изображениями. Вы можете открывать, изменять размер, сохранять и применять различные эффекты к изображениям. Например, вы можете создать программу для обработки фотографий, добавить фильтры или изменить цветовую палитру. Предположим, у вас есть фотография, которую вы хотели бы обработать. С помощью Pillow вы можете изменить размер фотографии, применить фильтр для создания эффекта черно-белого изображения и сохранить результат. Это полезно, если вам нужно подготовить фотографии для веб-страницы или печати.
- OpenCV — отличная библиотека для работы с компьютерным зрением и обработки видео. Она предоставляет мощные функции для обработки и анализа изображений. Можно распознавать объекты, извлекать признаки, применять фильтры и многое другое. OpenCV широко используется в области компьютерного зрения, робототехники и автоматического видеоанализа. Например, для создания системы слежения за движением можно использовать OpenCV для анализа видеопотока с веб-камеры. Можно обнаруживать движущиеся объекты, выделять их границы и отслеживать их положение в режиме реального времени. Это полезно для систем видеонаблюдения или интерактивных игр.
Это лишь некоторые из библиотек Python для работы с графикой. Выберите ту, которая наиболее соответствует вашим потребностям и начните создавать потрясающие графики и визуализации!
Библиотеки для создания игр
Если вас когда-нибудь манила мысль создать свою собственную игру, то хорошая новость в том, что в Python есть несколько отличных библиотек, которые помогут вам воплотить вашу идею в жизнь:

Похожие материалы
Библиотеки в программировании: мощный иструмент для создания чистого кода
Моё мнение про Python
IDE и редакторы кода для Python
Php vs Python. Что выбрать?
Что такое библиотеки в Python и зачем они нужны?
Библиотеки в Python — это предварительно написанные модули, которые можно включить в свою программу. Они экономят время, предоставляя готовые функциональные решения.
Какие библиотеки наиболее популярны для анализа данных?
Для анализа данных часто используются Pandas, NumPy и Matplotlib. Pandas хорош для работы с табличными данными, NumPy — для математических операций, а Matplotlib — для визуализации.
Как установить библиотеку в Python?
Обычно библиотеки устанавливаются через менеджер пакетов pip. Команда в командной строке будет выглядеть примерно так: pip install имя_библиотеки.
Есть ли стандартные библиотеки в Python?
Да, Python идет с большой стандартной библиотекой, которая предлагает модули для разнообразных задач, от работы с файлами до сетевых операций.
Что такое веб-фреймворки и какие из них на Python?
Веб-фреймворки — это библиотеки для разработки веб-приложений. В Python популярны Django и Flask. Django предлагает много «из коробки», в то время как Flask дает больше гибкости.
Какую библиотеку выбрать для машинного обучения?
Scikit-learn — отличный выбор для стандартных задач машинного обучения. Если речь идет о нейронных сетях, стоит обратить внимание на TensorFlow и PyTorch.
Как создать библиотеку python примеры

В этом руководстве мы покажем на примере, как создать собственную библиотеку Python, которую можно будет установить с помощью менеджера пакетов pip , как другие сторонние решения. Если ваш код может приносить пользу, это отличный способ внести вклад в сообщество Python. Любой разработчик сможет установить пакет и импортировать его.
1. Создаём элементы библиотеки
Публикация пакета требует знания некоторых деталей. В этом примере мы будем рассматривать предварительно опубликованный пакет под названием dist_alx . Чтобы вам было удобнее сверяться, эта директория доступна в виде zip-папки в репозитории на GitHub.
Каталог содержит все необходимые элементы, которые должен иметь пакет перед публикацией. Мы будем использовать этот пример в качестве эталона, поскольку все пакеты Python должны иметь одинаковую структуру. Если вам интересно, что именно делает пакет dist_alx , это объяснено там же в README-файле.
Корневой каталог dist_alx содержит следующие файлы и директории:
- setup.py – содержит метаданные пакета,
- setup.cfg – конфигурационный файл, используемый для хранения настроек,
- подпапку с тем же именем, что и родительская папка (в данном примере dist_alx ), где хранится фактический код вашего пакета на Python.
Подробнее об указанных файлах можно прочитать в документации библиотеки setuptools. Примеры содержания файлов в нашем случае:

4. Публикуем библиотеку
Публикация осуществляется из командной строки или терминала. Команды идентичны в Windows и Linux.
Для публикации нам потребуется установить две библиотеки – setuptools и twine :

Развёртываем пакет запустив setup.py :

Обратите внимание, что теперь в родительской папке будут созданы две новых директории ( egg-info и dist ).

Теперь с помощью twine развёртываем пакет на PyPI:

Здесь нужно указать своё имя пользователя и пароль PyPI.

Вуаля! Пакет размещён на сервере и готов к использованию!
Переходим в учётную запись на PyPI, идём в раздел Your projects. Если всё в порядке, вы увидите библиотеку.

Обратите внимание, что PyPI не поддерживает на сайте символ подчёркивания в именах файлов. Поэтому dist_alx отображается как dist-alx . Однако это не влияет на использование библиотеки – при последующем импорте мы будем вводить, как и задумано, dist_alx .
5. Используем
Переходим к любимому клиенту Python (например, Jupyter) и устанавливаем пакет с помощью pip . Импортируем и пользуемся в своё удовольствие!

Заключение
Прежде чем размещать пакет на главном сервере, опубликуйте его сначала на тестовом сервере PyPI.
Итак, последовательность создания библиотеки Python следующая:
- Изготовление необходимых элементов упаковки, проверка значений параметров.
- Подготовка кода пакета.
- Создание учётной записи PyPI (если её ещё не было).
- Публикация пакета на PyPI.
- Тестирование: pip-установка, импорт и запуск модуля.
Если вы думаете, что пока не готовы публиковать свою библиотеку, вам могут быть полезны такие наши публикации:
- Погружаемся в основы и нюансы тестирования Python-кода
- Инструменты для анализа кода Python. Часть 1
- Инструменты для анализа кода Python. Часть 2
- Python: практики для написания эффективного кода