使用 poetry 进行 Python 项目开发
最近创建了几个 Python 的开源项目(u-coreutils、auto-logger、fastapi-redis-session)。
我在这些项目中开始使用poetry
工具进行依赖管理,体验还是相当不错的。
poetry
简介
Poetry是一个基于pyproject.toml
的工具,利用poetry
可以更加方便地进行 Python 项目的开发、构建、发布和依赖管理。
接下来通过一个例子来简单介绍一下 poetry 的使用。
初始化项目
我们将创建一个库greet
,提供一个greet
函数来输出"Hello, World",代码和文件结构都很简单。
在project
目录下运行poetry init
(可以通过pip install -U poetry
进行poetry
工具的安装),会有很多提示信息用于确认项目的名称、版本、作者、协议、Python 版本,也可以在init
过程中指定项目的依赖和dev
依赖。
poetry init
运行成功后,solution
目录下会生成一个pyproject.toml
文件。
可以手动设置一些项目的其他信息,例如仓库地址或者README
文件的位置。
初始化虚拟环境
运行poetry shell
命令或者poetry install
命令,poetry
会为项目创建一个虚拟环境(poetry shell
命令会直接激活创建的虚拟环境)。
可以通过poetry config virtualenvs.path
命令查看虚拟环境的位置。
添加依赖
运行poetry add [--dev] <package>
命令来为项目定义依赖或者dev
依赖.
或者直接在pyproject.toml
的[tool.poetry.dependencies]
或者[tool.poetry.dev-dependencies]
位置手动填写依赖,手动更改依赖后需要运行poetry update
命令 将依赖安装到虚拟环境中。
运行poetry update
命令可以更新依赖到最新的版本。
构建项目
简单地运行poetry build
就可以完成项目的构建过程,会在dist
目录下生成.tar.gz
和.whl
两种格式的包(都可以直接通过pip install
安装)。
发布包到 pypi
运行poetry publish [--build]
命令,就会将上一步构建好的包发布到pypi
, 过程中需要填写 pypi 的账户名和密码, 或者通过 poetry config pypi-token.pypi <token>
设置pypi token
。
在这个例子中我们的发布会失败,因为pypi
上已经有greet
这个包了。
想将包发布到其他repository
的话可以参考官方的说明。
总结
poetry
还是一个相当不错的工具,尤其是想发布自己的 Python 库到pypi
的时候,不用再维护较难管理的setup.py
了。
版权声明: 本文为 InfoQ 作者【★忆先★】的原创文章。
原文链接:【http://xie.infoq.cn/article/ec0fe88cfeb9e917f9f556f26】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
评论