pyproject.toml, Giga
https://giga.chat/link/gcsJhXtnzn Python, Project Structure
https://giga.chat/link/gcsJhXtnzn
Файл pyproject.toml стал стандартом де-факто для описания метаданных и конфигурации
Python-проектов начиная с версии Python 3.8 и PEP 518,
который предложил стандартный способ определения зависимостей и требований к сборке пакетов.
Этот файл играет ключевую роль в современной разработке на Python,
поскольку позволяет унифицированно задать требования к инструментам сборки,
спецификации зависимостей и другим аспектам проекта.
Вот пример простого файла pyproject.toml:
[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" [tool.black] line-length = 88 target-version = ['py37'] [tool.isort] profile = "black" [tool.ruff] select = ["F", "E", "W", "C", "B"] [tool.poetry] name = "example-pkg-yourusername" version = "0.1.0" description = "Example package created using Poetry." authors = ["Your Name <you@example.com>"] license = "MIT" readme = "README.md" packages = [{include = "src"}] [tool.poetry.dependencies] python = "^3.7" requests = "^2.25.1" [tool.poetry.dev-dependencies] pytest = "^6.2.5"
Давайте разберём ключевые секции этого файла подробнее:
[build-system]
Эта секция определяет набор инструментов и зависимость для сборки пакета:
requires: список обязательных зависимостей для сборки (обычно это setuptools и wheel).build-backend: имя встроенной системы сборки (чаще всего этоsetuptools.build_meta).
Инструменты проверки стиля и анализа кода ([tool.*])
Эти секции используются различными инструментами для задания специфической конфигурации:
- Black: настраивается длина строки и целевые версии Python.
- Isort: задаётся профиль сортировки импортов.
- Ruff: указывается набор правил проверки кода.
[tool.poetry]
Это одна из наиболее распространённых секций для управления зависимостями и настройками
проекта с помощью менеджера пакетов Poetry:
name: название пакета.version: версия пакета.description: краткое описание пакета.authors: авторы проекта.license: лицензия на распространение.readme: путь к файлу ReadMe.packages: пути к основным пакетам проекта.
[tool.poetry.dependencies]
Здесь перечисляются зависимости основного проекта (production-dependencies):
- Версии Python.
- Внешние библиотеки, такие как
requests.
[tool.poetry.dev-dependencies]
Здесь находятся зависимости, необходимые исключительно для разработки (dev-dependencies),
такие как тестировочные библиотеки (pytest).
Зачем нужен pyproject.toml?
Использование pyproject.toml даёт следующие преимущества:
- Стандартизованный способ предоставления информации о проекте.
- Минимизирует различия между рабочими процессами разработки.
- Унифицирует установку и сборку проектов независимо от используемого менеджером пакетов.
- Улучшает контроль над зависимостями и процессом сборки.
Благодаря таким преимуществам файл pyproject.toml
стал обязательным элементом практически каждого современного Python-проекта.
Комментариев нет:
Отправить комментарий