Создание и распространение пакетов Python

Почему важно упаковывать код в пакеты? 🎁

Когда ваш проект растёт, хаотичное хранение файлов становится неудобным. Пакеты Python помогают: - Организовать код логически - Переиспользовать модули в других проектах - Легко делиться кодом с сообществом - Управлять зависимостями

Представьте, что вы создали полезную библиотеку для работы с API — упаковав её, вы можете установить одной командой в любом проекте!


Структура Python-пакета 📂

Базовый пакет имеет такую структуру:

my_awesome_package/
├── my_awesome_package/      # Основная директория пакета
   ├── __init__.py          # Инициализация пакета
   ├── module1.py           # Ваши модули
   └── utils/               # Подпакет
       ├── __init__.py
       └── helpers.py
├── tests/                   # Тесты (опционально)
├── README.md                # Описание проекта
└── setup.py                 # Конфигурация пакета

__init__.py — сердце пакета ❤️

Этот файл делает директорию Python-пакетом. Он может быть пустым или содержать логику инициализации:

# __init__.py
from .module1 import main_function  # Импорт в пространство имён пакета

__version__ = "0.1.0"  # Версия пакета

Создаём setup.py — паспорт пакета 🏷️

Этот файл описывает метаданные пакета для установки:

from setuptools import setup, find_packages

setup(
    name="my_awesome_package",
    version="0.1.0",
    author="Ваше Имя",
    description="Крутой пакет для работы с API",
    long_description=open("README.md").read(),
    long_description_content_type="text/markdown",
    packages=find_packages(),
    install_requires=[
        "requests>=2.25.1",  # Зависимости
    ],
    python_requires=">=3.8",
)

🔍 Ключевые параметры: - packages — автоматически находит все пакеты в проекте - install_requires — список зависимостей - python_requires — минимальная версия Python


Установка пакета в develop-режиме ⚙️

Перед публикацией протестируйте пакет локально:

pip install -e .

Флаг -e устанавливает пакет в режиме разработки — изменения в коде сразу доступны без переустановки.


Публикация в PyPI 🚀

PyPI (Python Package Index) — главный репозиторий пакетов Python. Вот как опубликовать свой:

  1. Создайте аккаунт на pypi.org
  2. Установите инструменты публикации: bash pip install twine setuptools wheel
  3. Соберите дистрибутив: bash python setup.py sdist bdist_wheel
  4. Загрузите на PyPI: bash twine upload dist/*

После успешной загрузки ваш пакет можно установить через:

pip install my_awesome_package

Советы профессионалов от Данилы Бежина 💡

  1. Семантическое версионирование — используйте MAJOR.MINOR.PATCH:

    • MAJOR — обратно несовместимые изменения
    • MINOR — новая функциональность с обратной совместимостью
    • PATCH — исправления ошибок
  2. .gitignore — исключите служебные файлы:

    text build/ dist/ *.egg-info/

  3. Тестирование перед публикацией — создайте виртуальное окружение и протестируйте установку.

  4. Документация — хороший README.md увеличивает шансы, что пакетом будут пользоваться.


Реальный пример: пакет для работы с API 🔥

Посмотрите, как устроен requests — эталонный пример качественного пакета. Обратите внимание на: - Чёткую структуру - Подробную документацию - Грамотное управление зависимостями


Что дальше? 🌟

Попробуйте упаковать свой проект! Даже если это маленькая утилита — публикация в PyPI: - Позволит легко устанавливать её на других машинах - Станет отличным пунктом в портфолио - Поможет сообществу, если код действительно полезен

Как говорится в Python-сообществе: "Публикуй рано, публикуй часто!"

Скрыть рекламу навсегда

🎥 YouTube: программирование простым языком

Канал, где я спокойно и по шагам объясняю сложные темы — без заумных терминов и лишней теории.

Подходит, если раньше «не заходило», но хочется наконец понять.

▶️ Смотреть курсы на YouTube