poetry.toml和 pyproject.toml是 Poetry 工具中的两个配置文件,它们有不同的用途但相互协作。以下是它们的区别、联系以及为什么需要同时存在:
1. 核心区别
| 文件 | 主要用途 | 内容示例 |
|---|---|---|
| | 项目元数据和依赖声明(符合 PEP 621标准) | 包含项目名称、版本、依赖项、构建配置等(如 |
| | Poetry 工具的本地配置(用户或项目级设置) | 包含 Poetry 的私有源配置、虚拟环境路径、实验性功能开关等(如 |
2. 为什么需要两个文件?
-
关注点分离
-
pyproject.toml是标准化的 Python 项目配置文件,用于定义项目结构和依赖,可被其他工具(如pip,build)读取。 -
poetry.toml是 Poetry 工具自身的配置,包含与项目无关的本地环境设置(如私有仓库凭证、虚拟环境偏好)。
-
-
兼容性与灵活性
-
pyproject.toml遵循 Python 社区标准(PEP 621),确保项目可被其他工具链支持。 -
poetry.toml允许用户自定义 Poetry 行为(如禁用虚拟环境),而不会污染项目元数据。
-
3. 典型内容对比
pyproject.toml(项目核心配置)
[tool.poetry]
name = "my-project"
version = "0.1.0"
description = "A Python project"
[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.28.0"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
poetry.toml(Poetry 工具配置)
[virtualenvs]
path = ".venv" # 自定义虚拟环境路径
create = true # 自动创建虚拟环境
[experimental]
new-installer = true # 启用实验性功能
4. 何时需要修改它们?
-
修改
pyproject.toml:当调整项目依赖、版本、脚本或构建配置时(如新增一个包依赖)。
-
修改
poetry.toml:当需要更改 Poetry 的本地行为时(如切换私有源、禁用虚拟环境)。
5. 联系与协作
-
Poetry 优先读取
pyproject.toml 中的项目元数据,但会结合poetry.toml的本地配置执行操作(如安装依赖时使用私有源)。 -
如果
poetry.toml不存在,Poetry 会使用默认配置,而pyproject.toml是必须的。
总结
-
pyproject.toml = 项目的“说明书”(标准化,共享)。 -
poetry.toml = Poetry 的“个人偏好”(本地化,可选)。两者分工明确,既保证项目可移植性,又支持灵活的本地开发配置。

190

被折叠的 条评论
为什么被折叠?



