pyproject_toml文件
pyproject.toml 是一个用于定义 Python 项目的配置文件,包含构建系统、依赖项管理、项目元数据等信息。它最初是由 PEP 518 引入的,目的是简化项目的构建流程并提供标准化的配置方式
# pyproject.toml 的作用
主要用于以下几个方面:
- 定义构建系统:
它允许你指定项目的构建系统,如 setuptools、poetry、flit 等工具。通过 pyproject.toml,你可以清楚地定义项目需要使用的构建工具和相关依赖
[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"
1
2
3
2
3
其中:
- requires: 指定构建项目所需的依赖包
- build-backend: 指定构建项目时要使用的工具
- 依赖管理:
一些现代的依赖管理工具(如 poetry)也使用 pyproject.toml 来管理项目依赖和虚拟环境。相比于 requirements.txt,使用 pyproject.toml 更加灵活、结构化
例如,使用 poetry 时的依赖管理:
[tool.poetry]
name = "my_project"
version = "0.1.0"
description = "A sample Python project"
authors = ["Your Name <[email protected]>"]
[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"
[tool.poetry.dev-dependencies]
pytest = "^6.2.2"
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 配置项目元数据:
- 它可以作为项目的元数据文件,包含项目的名称、版本、描述、作者信息等,类似于 setup.py 文件的作用
- 如果你使用像 setuptools 这样的构建工具,这些元数据可以直接从 pyproject.toml 中读取
- 工具配置:
除了构建工具和依赖管理外,pyproject.toml 还可以用来配置各种开发工具。例如,格式化工具 black 或静态分析工具 mypy 等可以在 pyproject.toml 中进行配置,而不是在项目的其他配置文件中
例如,配置 black 格式化工具:
[tool.black]
line-length = 88
target-version = ['py38']
1
2
3
2
3
配置 mypy 静态类型检查:
[tool.mypy]
ignore_missing_imports = true
1
2
2
# 主要优点
- 标准化配置: 不同工具(如构建工具、依赖管理、代码检查)可以在同一个文件中统一配置,减少了文件的分散
- 兼容性: 随着 pyproject.toml 的标准化,越来越多的 Python 工具(如 black、mypy、tox、poetry 等)都开始支持并依赖于此文件
- 可扩展性: 通过 pyproject.toml,项目可以更方便地引入不同的构建工具和配置项,而无需维护多个配置文件
# link
- config case
上次更新: 2024/12/01, 17:09:08