Как упаковать собственный модуль в архив и распространить его?

Для упаковки и распространения Python модуля:

  1. Создайте структуру пакета: my_module/__init__.py, my_module/module.py, setup.py, README.md (пример)
  2. Напишите файл setup.py с информацией о пакете (название, версия, зависимости и т.д.) Используйте setuptools.
  3. Соберите пакет: python setup.py sdist bdist_wheel (создаст .tar.gz и .whl файлы в папке dist).
  4. Загрузите пакет в PyPI (Python Package Index) используя twine: twine upload dist/*. Требуется регистрация в PyPI.
  5. Установите локально (для теста): pip install dist/my_module-1.0.0-py3-none-any.whl (пример названия файла)

После загрузки в PyPI, модуль можно установить командой: pip install my_module.


Чтобы упаковать собственный модуль Python в архив и распространить его, необходимо выполнить несколько шагов. Вот подробное описание процесса:

  1. Подготовка структуры проекта:

    Сначала убедитесь, что ваш проект организован правильно. Рекомендуется следующая структура:

            
    my_module/
    ├── my_module/
    │   ├── __init__.py
    │   └── your_module.py  # Или другие ваши модули
    ├── README.md          # Описание вашего модуля
    ├── LICENSE            # Лицензия (например, MIT)
    └── setup.py           # Файл настройки для packaging
            
          
    • my_module/my_module: Здесь хранятся исходные файлы вашего модуля. Обратите внимание на двойную структуру. Первая папка my_module это корневая директория проекта, а вторая my_module - папка, содержащая код модуля.
    • __init__.py: Пустой файл или файл, содержащий инициализационный код пакета. Необходим, чтобы Python распознал директорию как пакет.
    • your_module.py: Файл(ы) с кодом вашего модуля.
    • README.md: Документация к вашему модулю, описывающая его назначение, установку и использование. Формат Markdown.
    • LICENSE: Файл, содержащий информацию о лицензии, под которой распространяется ваш модуль. Важно указать лицензию, чтобы другие знали, как они могут использовать ваш код.
    • setup.py: Ключевой файл, который содержит метаданные о вашем пакете и инструкции по его сборке и установке.
  2. Создание файла setup.py:

    Этот файл содержит информацию о вашем модуле, такую как имя, версия, автор, описание и зависимости. Вот пример:

            
    from setuptools import setup, find_packages
    
    with open("README.md", "r", encoding="utf-8") as fh:
        long_description = fh.read()
    
    setup(
        name="my_module",  # Имя вашего модуля (должно быть уникальным в PyPI)
        version="0.1.0",  # Версия вашего модуля
        author="Your Name",  # Ваше имя
        author_email="your.email@example.com",  # Ваш email
        description="A short description of your module",  # Краткое описание
        long_description=long_description,  # Полное описание из README.md
        long_description_content_type="text/markdown",  # Укажите тип содержимого long_description
        url="https://github.com/your_username/my_module",  # URL вашего репозитория (необязательно)
        packages=find_packages(),  # Автоматически находит все пакеты в проекте
        classifiers=[
            "Programming Language :: Python :: 3",
            "License :: OSI Approved :: MIT License",  # Укажите лицензию
            "Operating System :: OS Independent",
        ],
        python_requires='>=3.6',  # Минимальная версия Python
        install_requires=[
            # Перечислите зависимости вашего модуля (если есть)
            # "requests>=2.20.0",
        ],
    )
            
          

    Обязательно замените значения полей на ваши собственные.

  3. Сборка пакета:

    Используйте setuptools для сборки пакета. В командной строке, находясь в корневой директории проекта (там, где находится setup.py), выполните:

            
    python setup.py sdist bdist_wheel
            
          

    Эта команда создаст два типа архивов:

    • sdist: Создает архив с исходным кодом (.tar.gz).
    • bdist_wheel: Создает предварительно скомпилированный пакет (.whl) для более быстрой установки. Этот формат предпочтительнее.

    Архивы будут созданы в директории dist.

  4. Распространение пакета:

    Есть несколько способов распространить ваш пакет:

    • PyPI (Python Package Index): Это основной способ распространения пакетов Python. Чтобы загрузить свой пакет в PyPI:
      1. Зарегистрируйтесь на PyPI и TestPyPI (для тестирования).
      2. Установите twine: pip install twine.
      3. Загрузите пакет в TestPyPI (рекомендуется сначала протестировать):
                        
        twine upload --repository testpypi dist/*
                        
                      
      4. Загрузите пакет в PyPI:
                        
        twine upload dist/*
                        
                      
    • Локальный репозиторий: Вы можете создать свой локальный репозиторий для распространения пакетов внутри организации.
    • Прямая установка из исходного кода: Пользователи могут установить ваш пакет непосредственно из исходного кода, используя pip:
                  
      pip install path/to/your/package
                  
                
    • Git репозиторий: Пользователи могут установить пакет напрямую из Git репозитория
                  
      pip install git+https://github.com/your_username/your_repository.git@branch_name
                  
                
  5. Обновление пакета:

    При обновлении пакета необходимо изменить номер версии в файле setup.py. После этого повторите шаги по сборке и распространению пакета.

Важные замечания:

  • Перед загрузкой на PyPI убедитесь, что название вашего пакета уникально.
  • Регулярно обновляйте свой пакет, чтобы исправить ошибки и добавить новые функции.
  • Поддерживайте актуальную документацию.
0