pyproject.toml
是一个配置文件,用于定义 Python 项目的构建、依赖管理和项目元数据。它的使用主要由 PEP 518、PEP 517 和 PEP 621 等标准推动,成为 Python 包管理的现代标准文件。
通常,pyproject.toml
主要用于以下几方面:
- 构建系统配置:定义使用哪个构建工具(如
setuptools
、poetry
、flit
等)和依赖,替代了传统的setup.py
文件。 - 项目元数据:指定项目的名称、版本、作者等基本信息。
- 依赖管理:管理项目的依赖项,包括开发、测试等分组依赖。
pyproject.toml
的基本格式
以下是 pyproject.toml
文件的一个典型结构示例:
[build-system]
# 指定构建所需的工具及其版本
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"[project]
name = "my_project"
version = "0.1.0"
description = "A sample Python project"
authors = [{name = "Your Name", email = "your.email@example.com"},
]
license = { text = "MIT" }
readme = "README.md"
requires-python = ">=3.7"# 定义项目的依赖
dependencies = ["requests>=2.25.1","numpy>=1.19.0",
]# 可选的额外依赖分组
[project.optional-dependencies]
dev = ["pytest>=6.2.0","black",
]
stable = ["requests==2.25.1","numpy==1.19.0",
]# 入口点(如命令行脚本)
[project.scripts]
my_script = "my_project.main:main_function"
各部分的含义
[build-system]
:定义构建系统的配置。requires
指定构建项目需要的依赖项;build-backend
定义构建工具的入口。[project]
:包含项目的元数据,如name
(项目名称)、version
(版本)、description
(描述)等。dependencies
用于声明项目的依赖。[project.optional-dependencies]
:可选依赖项,分组管理不同使用场景的依赖。可以通过pip install .[dev]
安装dev
组依赖。[project.scripts]
:定义命令行入口点,用于创建自定义命令(如my_script
)。
主要工具支持
setuptools
:兼容pyproject.toml
,用于传统构建和发布。poetry
:自动管理依赖和版本,同时生成pyproject.toml
文件。flit
:简化包构建和发布的工具。
pyproject.toml
提供了更简洁、现代化的方式管理 Python 项目,是 Python 社区推崇的项目标准配置文件。