pyproject.toml
The pyproject.toml file is the standard configuration file for modern Python projects, defined by PEP 518. It serves as a central place to specify project metadata, dependencies, build requirements, and tool configurations.
ℹ️
Key Aspects
- Single Source: Consolidates project configuration that was historically spread across multiple files like
setup.py
,setup.cfg
, andrequirements.txt
- Standards Compliant: Follows modern Python packaging standards (PEP 517/518/621)
- Tool Agnostic: Works with any compliant build backend or package manager
- TOML Format: Uses TOML for improved readability and reduced syntax errors compared to JSON or INI formats
Core Sections Examples
Project Metadata (PEP 621)
[project]
name = "example"
version = "0.1.0"
description = "A example project"
requires-python = ">=3.8"
dependencies = [
"requests>=2.28.0",
"pandas~=2.0.0",
]
Build System (PEP 517)
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
Tool Configuration
[tool.uv]
dependencies = ["pytest>=7.0.0"]
[tool.ruff]
line-length = 88
Important Fields
name
: Package name on PyPIversion
: Package versiondescription
: Short project summaryrequires-python
: Python version constraints
dependencies
: Runtime package requirementsoptional-dependencies
: Feature-specific packages[tool.uv.dependencies]
: Development dependencies
requires
: Build system dependenciesbuild-backend
: Backend package namebackend-path
: Custom backend location
Learn More
Last updated on