From e5abc1fe99340b979b18864d978179f71fe8f5c5 Mon Sep 17 00:00:00 2001 From: vlapa Date: Sat, 13 Jun 2026 20:33:26 +0300 Subject: First --- ...272\320\260 \320\264\320\273\321\217 Python.md" | 161 +++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 "PYTHON/\320\241\320\262\320\276\321\217 \320\261\320\270\320\261\320\273\320\270\320\276\321\202\320\265\320\272\320\260 \320\264\320\273\321\217 Python.md" (limited to 'PYTHON/Своя библиотека для Python.md') diff --git "a/PYTHON/\320\241\320\262\320\276\321\217 \320\261\320\270\320\261\320\273\320\270\320\276\321\202\320\265\320\272\320\260 \320\264\320\273\321\217 Python.md" "b/PYTHON/\320\241\320\262\320\276\321\217 \320\261\320\270\320\261\320\273\320\270\320\276\321\202\320\265\320\272\320\260 \320\264\320\273\321\217 Python.md" new file mode 100644 index 0000000..d1c365a --- /dev/null +++ "b/PYTHON/\320\241\320\262\320\276\321\217 \320\261\320\270\320\261\320\273\320\270\320\276\321\202\320\265\320\272\320\260 \320\264\320\273\321\217 Python.md" @@ -0,0 +1,161 @@ +Часто в проектах на Python мы используем внешние библиотеки — уже готовые скрипты с нужными нам функциями, которые упрощают разработку. Теперь настало время сделать свою первую библиотеку на Python с нуля. + +Есть несколько способов собрать свою библиотеку — и все они рабочие. Мы выбрали способ, который рекомендует Гвидо ван Россум — автор языка Python, но вы можете выбрать любой другой подход. + +## Подготовка + +Чтобы сборка библиотеки прошла без проблем, обновим менеджер пакетов pip. Для этого в командной строке выполним команду: + +```markup +pip install --upgrade pip +``` + +Теперь установим пакет twine — он нам поможет опубликовать свою библиотеку в сети, чтобы её мог установить любой желающий: + +```markup +pip install --upgrade twine +``` + +Затем поставим `hatchling` — пакет для сборки серверной части библиотеки: + +```markup +pip install hatchling +``` + +И наконец, установим пакет `build`, чтобы создать загрузочные архивы с нашей библиотекой: + +```markup +pip install --upgrade build +``` + +## Структура библиотеки + +Библиотека в Python — это не просто один скрипт, а целый проект, в котором есть много разных файлов, каждый из которых отвечает за что-то своё. + +Первое, что делаем, — создаём папку `src`, в которой будет лежать наша новая библиотека. После этого внутри этой папки создаём ещё одну — с именем создаваемой библиотеки. Как мы назовём эту вложенную папку, так и будет называться наша библиотека. Для проекта мы выбрали название `beginning_package`. + +Теперь внутри папки с названием создаём два файла: + +- __init__.py — файл, который покажет компьютеру, что beginning_package — это не просто папка, а целый модуль с определённой функциональностью; +- main.py — тут будет код нашей библиотеки. + +Теперь делаем остальной обвес и внутри основной папки создаём такое: + +- папку tests — если к библиотеке делаются тесты, они отправляются сюда. У нас их пока не будет, но папка, даже пустая, всё равно нужна, таковы правила; +- LICENSE — файл с лицензией. Расширения нет, только имя; +- pyproject.toml — отвечает за конфигурацию и серверную часть библиотеки; +- README.md — информация о библиотеке: что она делает, зачем нужна и какие у неё особенности. + +В итоге по структуре должно получиться что-то вроде этого: + +![Тут ещё есть папка venv для виртуального окружения, но нам она сегодня не понадобится](https://thecode.media/wp-content/uploads/2024/04/unnamed-3.png) + +Тут ещё есть папка venv для виртуального окружения, но нам она сегодня не понадобится + +## Оформляем лицензию и файл README.md + +Наша библиотека будет относиться к свободному ПО, поэтому в файл с лицензией мы вставляем стандартный текст MIT License. В первой строке указываем копирайт и название проекта: + +Текст лицензии + +![Оформляем лицензию и файл README.md](https://thecode.media/wp-content/uploads/2024/04/unnamed-1-1.png) + +Точно так же заполняем файл README.md. Обычно здесь показывают, какие функции доступны в пакете, причём здесь уже можно использовать маркдаун для оформления текста. У нас учебная библиотека, поэтому сделаем максимально простое описание: + +```markup +This library is not that useful. Perhaps someday it will become great. +``` + +(Это не очень полезная библиотека. Возможно, когда-нибудь она станет лучше) + +![Оформляем лицензию и файл README.md](https://thecode.media/wp-content/uploads/2024/04/unnamed-2-1.png) + +## Заполняем pyproject.toml + +Рyproject.toml — это файл, который отвечает за служебную часть библиотеки: как она называется, какая версия, какая версия Python нужна, по какой лицензии распространяется и так далее. Когда мы хотим установить новую библиотеку, система сначала смотрит в этот файл и проверяет, соответствует ли ваша версия Python той, что нужна для работы. + +Файл состоит из блоков, каждый из которых отвечает за что-то своё. Начнём с блока `build-system` — он отвечает за параметры сборки загрузочного архива. В нашем проекте за серверную часть отвечает `Hatchling`, поэтому указываем его: + +```python +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" +``` + +Python + +Copy + +Дальше идут основные параметры проекта: название, выпуск, авторы, описание, имя файла readme, требования к версии Python, язык программирования, тип лицензии и совместимость с ОС: + +```python +[project] +name = "" +version = "0.0.1" +authors = [ + { name="", email="" }, +] +description = "" +readme = "README.md" +requires-python = ">=3.10.0" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] +``` + +Python + +Copy + +В конце можно добавить разные ссылки, например, на репозиторий в GitHub, домашнюю страницу проекта или на дополнительные материалы: + +```python +[project.urls] +Homepage = "" +Issues = "" +``` + +Python + +Copy + +## Пишем библиотеку + +В папке с библиотекой два файла — `__init.py__` и `main.py`. Файл `__init__.py` можно оставить пустым — он нужен для того, чтобы сборщик понял, что это именно цельный проект и его нужно собрать из других файлов в той же папке. + +В `main.py` пишем сам код библиотеки. Так как это самая первая и учебная наша библиотека, сделаем там только одну функцию с приветствием: + +```python +def greeting(): + return "Hello, I'm your first library!" +``` + +Python + +Copy + +## Создаём загрузочные архивы + +Цель этого этапа — собрать и подготовить библиотеку к загрузке в менеджер пакетов `pip`, откуда каждый сможет её установить. Для этого открываем командную строку, переходим в папку с проектом и собираем архив: + +```markup +py -m build +``` + +![Пишем и публикуем свою первую библиотеку для Python](https://thecode.media/wp-content/uploads/2024/04/unnamed-3-1.png) + +Если в проводнике мы посмотрим на структуру папок, то увидим, что там появилась новая папка — `dist`, в которой и хранятся наши подготовленные для загрузки архивы: + +![Пишем и публикуем свою первую библиотеку для Python](https://thecode.media/wp-content/uploads/2024/04/unnamed-4-1.png) + +Заглянем внутрь: + +![Пишем и публикуем свою первую библиотеку для Python](https://thecode.media/wp-content/uploads/2024/04/unnamed-5-1.png) + +## Создаём токен для подписи библиотеки + +PyPi — это хранилище открытого программного обеспечения для Python. Чтобы опубликовать там библиотеку, нужно иметь аккаунт и получить уникальный API-токен. + +Для этого заходим на официальный сайт [pypi.org](https://pypi.org/), заводим новый аккаунт, привязываем Гугл-аутентификатор для безопасности и переходим [в настройки аккаунта](https://pypi.org/manage/account/). Там прокручиваем страницу вниз до блока API tokens: \ No newline at end of file -- cgit v1.2.3