跳转至

像诗歌一样优雅地打 PyPi 包——poetry

前言

当我们在 py 中经常复用一些方法时,我们会把它封装为一个模块,或者把它给开个服务等类似功能。但总有一些或多或少的限制和不便,这时候将常用功能给打成 PyPi 包并发布就显得十分重要。

poetry 能够像本站点的 mkdocs 一样简便,可以让我们不用理会如何新建、构建和发包的过程(虽说这也很简单),只需专注地开发自己的功能即可,极大地解放了我们的双手。

1. 前提准备

poetry 的使用非常的简单,只需要查看官网的基本用法的部分即可

poetryPyPi 包前准备如下:

2. 操作步骤

poetry 的打包和发包过程非常的简单,大致分为 初始化(创建)项目添加依赖打包并发包 这三大步。

2.1. 初始化项目

如果当前还没有创建项目,可以使用如下命令新建项目:

poetry new poetry-demo

如果已经存在项目,可以使用如下命令:

然后,它会让你输入包名称、版本号等信息,你可以选择输入,也可以选择按下 ENTER 键使用默认值,后期再修改 pyproject.toml 文件。

poetry init

2.2. 添加依赖

安装依赖包,此步骤会添加依赖包所依赖的所有包,比较方便。命令如下:

poetry add numpy

还可以,通过添加配置参数 –dev 来区分不同环境下的依赖包。

poetry 的部分命令已发生变化,若遇到问题请查看本文参看文档中的官网说明:官网说明

- 当添加依赖时指定为开发环境,会写到 `pyproject.toml` 中的 `[tool.poetry.dev-dependencies]` 区域
+ 当添加依赖时指定为开发环境,会写到 `pyproject.toml` 中的 `[tool.poetry.group.dev.dependencies]` 区域

# 在开发环境中添加依赖,不会在生产环境中安装此依赖,方便开发调试。
- poetry add pytest --dev
+ poetry add pytest -G dev

如果存在 poetry.lock 文件,直接根据 poetry.lock 文件安装依赖包。可以使用 install 命令直接解析并安装 pyproject.toml 的依赖包。

poetry install

2.3. 打包并发包

如果编写完成项目后,可以构建项目为 py 包,就可以根据 build 的文件来安装此包了。命令如下:

# 需要先进入此项目的根目录下,然后输入命令:
poetry build

想要更多人来方便地安装此包,则需要将此包发布到 PyPi 上,命令如下:

1
2
3
4
5
6
7
# 此步骤需要我们创建好 PyPi 的账户,在发包时会让输入账号和对应密码;
# 如果这是第一次提交,它将在上传之前自动注册包
poetry publish

# 一般在重建虚拟环境后,此命令会出问题,即使你的账号及密码完全正确。
# 当出现此问题,可输入以下命令解决:
poetry publish -u <pypi 用户名> -p <pypi 账号对应的密码>

3. 其它使用场景

3.1. 版本管理

poetry 在项目版本管理中的应用:

如果您想要修改项目的版本号,可以使用 poetry version 命令。这个命令接受一个参数,可以是一个新的版本号,也可以是一个修饰符(major, minor, patchpre)。例如:

  • poetry version 1.2.3 将会把版本号设置为1.2.3
  • poetry version patch 将会把版本号增加一个补丁级别(比如从1.2.3变成1.2.4
  • poetry version minor 将会把版本号增加一个次要级别(比如从1.2.3变成1.3.0
  • poetry version major 将会把版本号增加一个主要级别(比如从1.2.3变成2.0.0
  • poetry version prerelease 将会把版本号增加一个预发布标识(比如从1.2.3变成1.2.4-alpha

请注意,poetry version 命令只会修改 pyproject.toml 文件中的版本号,不会修改任何其他文件或元数据。

4. 参考文章

更多更详细的配置,请参考官网文章和下面的参考文章

评论

回到页面顶部