什么是 Poetry?
Poetry 是一个现代化的 Python 依赖管理和打包工具,旨在取代 pip、virtualenv、setup.py 和 requirements.txt,提供更好的依赖管理体验。
Poetry 解决了 pipenv 的性能问题,并且支持包发布,适合 Python 项目和库的开发。
Poetry 的特点
✅ 一体化管理:同时管理依赖、虚拟环境和 Python 包发布。
✅ 自动解析依赖:避免版本冲突,解析速度比 pipenv 更快。
✅ 基于 pyproject.toml:符合 PEP 518 规范,取代 setup.py 和 requirements.txt。
✅ 锁定依赖:使用 poetry.lock 确保项目可复现。
✅ 内置虚拟环境:无需手动管理 venv,自动创建隔离环境。
✅ 发布 Python 包:一键发布到 PyPI (poetry publish)。
安装 Poetry
官方推荐
curl -sSL https://install.python-poetry.org | python3 -
安装完成后,建议将 poetry 添加到 PATH:
export PATH="$HOME/.local/bin:$PATH"
使用 pip
pip install poetry
验证安装
poetry --version
创建和管理项目
创建新项目
poetry new myproject
这将创建如下结构:
myproject/
├── pyproject.toml # 依赖和项目配置文件
├── README.rst
├── myproject/
│ └── __init__.py
└── tests/
在已有项目中初始化 Poetry
如果已有 Python 项目(比如 Git 克隆下来的代码),可以在项目目录下运行:
poetry init
Poetry 会引导你配置 pyproject.toml。
依赖管理
添加依赖
安装 requests:
poetry add requests
安装 flask,但只用于开发环境:
poetry add --dev flask
移除依赖
poetry remove requests
安装所有依赖
poetry install
Poetry 会自动创建虚拟环境,并安装 pyproject.toml 中的依赖。
依赖版本控制
Poetry 允许你控制依赖的版本范围:
poetry add "requests>=2.20,<3.0"
生成 requirements.txt
如果需要导出 requirements.txt(比如部署到服务器),可以运行:
poetry export -f requirements.txt --output requirements.txt
运行和管理虚拟环境
进入虚拟环境
eval $(poetry env activate)
运行 Python 脚本
poetry run python script.py
运行 CLI 命令
poetry run pytest
查看当前虚拟环境
poetry env info
发布 Python 包
如果你要发布一个 Python 库,Poetry 也能帮你自动管理版本和上传到 PyPI。
构建项目
poetry build
会生成 .tar.gz 和 .whl 文件。
发布到 PyPI
poetry publish
如果需要提供 PyPI 账号:
poetry publish --username myuser --password mypassword
配置与高级用法
设置 Python 版本
poetry env use python3.11
全局配置
查看配置:
poetry config --list
设置 PyPI 镜像(比如国内源):
poetry config repositories.pypi https://pypi.tuna.tsinghua.edu.cn
总结
• Poetry 是 Python 开发的最佳实践,特别适用于现代项目和库开发。
• 比 pipenv 更快、更稳定,支持依赖管理 + 虚拟环境 + PyPI 发布。
• 基于 pyproject.toml,符合 PEP 518 标准,未来兼容性更好。
对于一般 Python 项目和库开发,Poetry 是当前最推荐的工具!