poetry 指北
之前 pipenv 的出现的确大大降低了 Python 依赖包管理的复杂度,提升了项目开发、工程迁移的效率。但是,TA 依然有一些致命的缺陷,比原来 pip + virtualenv 方案的繁琐、手动操作更为棘手。比如:
- Lock 速度缓慢
- 强行更新不相干依赖
- 依赖处理效果较差
这时,更为优秀的工具包出现了,TA 就是 poetry。
What
是一个 Python 虚拟环境和依赖管理工具,另外它还提供了包管理功能,比如打包和发布。
可以用来管理 Python 库和 Python 程序。
poetry 通过配置文件 pyproject.toml 来完成依赖管理、环境配置、基本信息配置等功能。相当于把 Python 项目中的 Pipfile、setup.py、setup.cfg、requirements.txt、MANIFEST.in 融合到一起。
通过 pyproject.toml 文件,不仅可以配置依赖包,还可以用于区分开发、测试、生产环境、配置源路径。
Why
poetry 相比于 pipenv 具有很多明显优势的功能:
- 更强大的依赖处理功能
- 易于打包和构建 Python 工程 # poetry build
- 易于发布工具包 # poetry publish
- 更强大的依赖处理功能
How
安装
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
pip install --user poetry
brew install poetry
常用命令
# 初始化虚拟环境
## 如果当前还没有创建工程,可以使用 poetry 新建工程:
poetry new project_name
## 已有工程的基础上进行创建:
poetry init
# 直接解析并安装 pyproject.toml 的依赖包
poetry install
# 激活当前项目虚拟环境
poetry shell
# 查看虚拟环境信息
poetry env info
# 显示虚拟环境列表
poetry env list
# 删除虚拟环境
poetry env remove python3
# 安装依赖包
poetry add numpy
poetry add numpy --dev
# 更新依赖包
poetry update
poetry update numpy
# 卸载安装包
poetry remove numpy
# 图形显示包依赖关系
poetry show --tree
使用 PyPi 镜像
由于网络原因,部分地区使用默认的 PyPi 源可能效果不佳。通过在 pyproject.toml 中配置源可以使 poetry 从指定的 PyPi 镜像中拉取代码。
[[tool.poetry.source]]
name = "tsinghua"
default = true
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
[[tool.poetry.source]]
name = "douban"
url = "https://pypi.doubanio.com/simple/"
Notation
poetry 或许目前依然存在着某些不足之处,但是,TA 的确提供了一套当前最为完善的 Python 依赖包管理解决方案。相对与当前的 pip、pipenv 具有很多显而易见的优势