Как мне включить каталог docs в pyproject.toml?

Вопрос или проблема

У меня есть простой файл pyproject, использующий setuptools для пакета с src-структурой (с использованием автоматического обнаружения).

Недавно я добавил директорию docs. Я думал, что автоматическое обнаружение подберет её и добавит в исходный пакет, но этого не произошло. Это нормально?

Если это нормально, то что мне делать, чтобы включить директорию docs в исходный пакет?

Я собрал пакет с существующим pyproject.toml, и он создал исходный пакет, который не включал директорию docs.

Структура каталогов:

.
├── AUTHORS
├── docs
│   ├── example1.md
│   └── example2.md
├── LICENSE
├── pyproject.toml
├── README.md
├── src
│   └── vtjson
│       ├── __init__.py
│       └── vtjson.py
└── tests
    └── test_vtjson.py

Файл pyproject:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "vtjson"
dynamic = ["version"]
authors = [
  { name="Michel Van den Bergh", email="[email protected]" },
]
description = "Легковесный пакет для валидации объектов Python, подобных JSON"
readme = "README.md"
dependencies = ["dnspython", "email_validator", "idna", "python-magic", "typing_extensions"]
requires-python = ">=3.7"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[tool.setuptools]
#py-modules = ["vtjson"]

[tool.setuptools.dynamic]
version = {attr = "vtjson.vtjson.__version__"}

[project.urls]
"Homepage" = "https://github.com/vdbergh/vtjson"
"Bug Tracker" = "https://github.com/vdbergh/vtjson/issues"

Ответ или решение

Для того чтобы включить директорию docs в сборку вашего пакета, вам необходимо внести изменения в файл pyproject.toml. По умолчанию setuptools не включает такие директории, как docs, в создаваемый пакет. Это связано с тем, что setuptools настроен для автоматического поиска только Python-модулей и пакетов, находящихся в корневом каталоге или в каталоге src.

Шаги для включения директории docs в сборку

  1. Создайте файл MANIFEST.in: Это файл, в котором вы можете указать, какие дополнительные файлы и директории должны быть включены в сгенерированные пакеты. В вашем случае, вы хотите добавить директорию docs. Создайте файл MANIFEST.in в корневом каталоге вашего проекта и добавьте следующие строки:

    recursive-include docs *

    Это указывает, что все файлы внутри директории docs должны быть включены в источник.

  2. Обновите pyproject.toml: Вам не нужно вносить значительных изменений в файл pyproject.toml для этой задачи, но убедитесь, что он корректен и настроен для работы с setuptools. Убедитесь, что у вас есть следующая секция (что вы уже сделали):

    [tool.setuptools]

    Если вам нужно, вы также можете добавить любые другие параметры, кавычки и строки, относящиеся к вашему проекту.

  3. Пересоберите пакет: После внесения изменений в MANIFEST.in, пересоберите ваш пакет, чтобы убедиться, что директория docs теперь включена. Вы можете осуществить это с помощью команды:

    python -m build
  4. Проверьте результаты сборки: После сборки проверьте созданные архивы пакета (например, .tar.gz или .whl), чтобы убедиться, что директория docs была включена в сборку.

Заключение

Использование файла MANIFEST.in представляет собой стандартный метод добавления дополнений в ваш пакет, когда вы работаете с setuptools. Это позволяет вам иметь в своём пакете не только код, но и документацию или другие ресурсы, необходимые пользователям вашего пакета.

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

Оцените материал
Добавить комментарий

Капча загружается...