Poetry: 简化 Python 打包和依赖管理
Poetry 帮助你声明、管理和安装 Python 项目的依赖,确保你在任何地方都有正确的技术栈。
Poetry 使用简单的基于 pyproject.toml
的项目格式替代了 setup.py
、requirements.txt
、setup.cfg
、MANIFEST.in
和 Pipfile
。
[tool.poetry]
name = "my-package"
version = "0.1.0"
description = "包的描述"
license = "MIT"
authors = [
"Sébastien Eustace <sebastien@eustace.io>"
]
repository = "https://github.com/python-poetry/poetry"
homepage = "https://python-poetry.org"
# README 文件用作包的描述
readme = ["README.md", "LICENSE"]
# 关键词(转换为包索引上的标签)
keywords = ["packaging", "poetry"]
[tool.poetry.dependencies]
# 兼容的 Python 版本
python = ">=3.8"
# 标准依赖项,使用语义化版本约束
aiohttp = "^3.8.1"
# 带有额外功能的依赖项
requests = { version = "^2.28", extras = ["security"] }
# 特定版本的依赖项,允许预发布版本
tomli = { version = "^2.0.1", python = "<3.11", allow-prereleases = true }
# Git 依赖项
cleo = { git = "https://github.com/python-poetry/cleo.git", branch = "main" }
# 可选依赖项(通过额外功能安装)
pendulum = { version = "^2.1.2", optional = true }
# 支持依赖组来组织你的依赖项
[tool.poetry.group.dev.dependencies]
pytest = "^7.1.2"
pytest-cov = "^3.0"
# ...并且只有在明确请求时才安装
[tool.poetry.group.docs]
optional = true
[tool.poetry.group.docs.dependencies]
Sphinx = "^5.1.1"
# Python 风格的入口点和脚本可以轻松表达
[tool.poetry.scripts]
my-script = "my_package:main"
安装
Poetry 支持多种安装方法,包括在 install.python-poetry.org 上提供的简单脚本。有关完整的安装说明,包括脚本的高级用法、替代安装方法和 CI 最佳实践,请参阅完整的安装文档。
文档
当前版本 Poetry 的文档(以及开发分支和最近不再支持的版本)可在官方网站上获取。
贡献
Poetry 是一个复杂的大型项目,始终需要贡献者。对于项目新手,我们提供了一份在 Poetry 和 poetry-core 中可以着手的建议问题列表。完整的贡献文档也提供了有用的指导。
资源
相关项目
- poetry-core:Poetry 项目的 PEP 517 构建系统,以及 Poetry 前端的无依赖核心功能
- poetry-plugin-export:将 Poetry 项目/锁文件导出为外部格式,如 requirements.txt
- poetry-plugin-bundle:将 Poetry 项目/锁文件安装到外部格式,如虚拟环境
- install.python-poetry.org:官方 Poetry 安装脚本
- website:Poetry 官方网站和博客