Python Poetry 是一个现代化的 Python 依赖管理和打包工具,旨在简化 Python 项目的依赖管理、虚拟环境管理和包发布流程。它的核心目标是取代传统的 pip
+ virtualenv
+ requirements.txt
工作流,提供更高效、一致和可靠的项目管理方式。
Poetry 的核心功能
1. 依赖管理
- 自动解决依赖冲突:Poetry 使用高级依赖解析算法,确保安装的包版本兼容。
- 区分生产环境和开发环境:可以定义项目依赖(生产环境)和开发工具依赖(如测试框架、代码检查工具等)。
- 锁定依赖版本:通过生成
poetry.lock
文件,确保不同环境下依赖版本的一致性(类似pipenv
的Pipfile.lock
)。
2. 虚拟环境管理
- 自动创建和管理项目的虚拟环境,无需手动操作
virtualenv
或venv
。 - 支持隔离不同项目的依赖,避免全局安装的混乱。
3. 项目打包与发布
- 通过简单命令即可将项目打包为标准的 Python 包(
wheel
或sdist
)。 - 支持一键发布到 PyPI 或其他私有仓库。
4. 配置文件统一化
- 使用
pyproject.toml
文件替代传统的setup.py
、requirements.txt
、MANIFEST.in
等多配置文件。 - 统一管理项目元数据、依赖、构建配置等。
Poetry 的优势
- 简化工作流:一条命令完成依赖安装、环境管理和打包。
- 依赖锁定:确保开发、测试和生产环境的一致性。
- 兼容 PEP 标准:遵循 PEP 517 和 PEP 621,与 Python 生态系统无缝集成。
- 跨平台支持:Windows、macOS、Linux 均可使用。
基本用法示例
-
初始化项目:
poetry new my-project # 创建新项目 cd my-project
或对已有项目:
poetry init # 生成 pyproject.toml
-
添加依赖:
poetry add requests # 添加生产依赖 poetry add pytest --dev # 添加开发依赖
-
安装依赖:
poetry install # 安装所有依赖(含开发依赖) poetry install --no-dev # 仅安装生产依赖
-
运行脚本:
poetry run python my_script.py
-
打包与发布:
poetry build # 生成 dist/ 下的包文件 poetry publish # 发布到 PyPI
适用场景
- 新项目的依赖管理和打包。
- 替代传统的
pip
+virtualenv
工作流。 - 需要精确控制依赖版本(如团队协作或部署)。
- 需要快速发布 Python 包到 PyPI。
总结
Poetry 是 Python 开发中的“一站式”工具,解决了依赖管理、环境隔离和打包发布的痛点。如果你经常因依赖冲突或环境不一致而头疼,或者希望简化项目配置流程,Poetry 是一个值得尝试的工具。
官方文档:https://python-poetry.org/