美文网首页
4 个Python项目管理与构建工具,程序员练手必备!

4 个Python项目管理与构建工具,程序员练手必备!

作者: 六星源课堂 | 来源:发表于2022-09-02 09:24 被阅读0次

Python 历时这么久以来至今还未有一个事实上标准的项目管理及构建工具,以至于造成 Python 项目的结构与构建方式五花八门。这或许是体现了 Python 的自由意志。

不像 Java 在经历了最初的手工构建,到半自动化的 Ant, 再到 Maven 基本就是事实上的标准了。其间 Maven 还接受了其他的 Gradle(Android 项目主推), SBT(主要是 Scala 项目), Ant+Ivy, Buildr 等的挑战,但都很难撼动 Maven 的江湖地位,而且其他的差不多遵循了 Maven 的目录布局

回到 Python,产生过 pip, pipenv, conda 那样的包管理工具,但对项目的目录布局没有任何约定

关于构建很多还是延续了传统的 Makefile 的方式,再就是加上 setup.py 和 build.py 用程序代码来进行安装与构建。关于项目目录布局,有做成项目模板的,然后做成工具来应用项目模板

下面大概浏览一下四个工具的使用

CookieCutter

PyScaffold

PyBuilder

Poetry

CookieCutter 一个经典的 Python 项目目录结构

最后由 cookiecutter 生成的项目模板是下面的样子:

这大概是当前比较流行的目录结构的主体框架,主要元素是:

项目 sample 目录中重复 sample 目录中放置 Python 源文件, 目录中是测试文件,再加一个 目录放文档,README.rst, 其他的用于构建的 setup, setup.cfg 和 Makefile 文件。

这其实是一个很经典的 Python 项目结构,接下来的构建就用 命令了,输入 会看到定义在 Makefile 文件中的指令

为使用上面的构建过程,需要安装相应的包,如 , , , , , 它们都可以通过 来安装。之后就可以 , , , 等。其中 可以生成一个很漂亮的 Web 文档。

PyScaffold 创建一个项目

PyScaffold 顾名思义,它是一个用来创建 Python 项目脚手架的工具,安装和使用:

这样创建了一个 Python 项目,目录结构与前面 cookiecutter 所选的模板差不多,只不过它把源文件放在了 目录,而非 目录。

整个项目的构建就要用 这个工具了。 是一个自动化测试和构建工具,它在构建过程中可创建 Python 虚拟环境,这让测试和构建能有一个干净的环境。

能显示出定义在 中所有的任务:

要执行哪个命令便用 , 等

在我体验 tox 命令过程中,每一步好像都比较慢,应该是创建虚拟机要花些时间。

PyBuilder

最好再看另一个构建工具 PyBuilder, 它所创建出的目录结构很接近于 Maven, 下面来瞧瞧

完后看下它的目录结构:

构建过程仍然是用 命令,可用 查看帮助, 列出所有的任务, PyBuilder 的任务是以插件的方式加入的,插件配置在 文件中。

PyBuilder 也是在构建或测试之前创建虚拟环境, 从 0.12.9 版开始可通过参数 跳过创建虚拟环境这一步。使用了 的话 Python 代码将会在运行 的当前 Python 环境中执行,所需的依赖将要手工安装。

项目的依赖也要定义在 文件中

随后在执行 创建虚拟环境时就会安装上面的依赖,并在其中运行测试与构建。

Poetry

最后一个 Poetry, 感觉这是一个更为成熟,项目活跃度也更高的 Python 构建,它有着更强大的信赖管理功能,用 就能添加依赖, 显示出依赖树。看下如何安装及创建一个项目

它创建的项目比上面都简单

如果给 带上 参数,那么源文件目录 会放在 目录下,即 .

会在当前目录中生成 文件,目录等的生成需手动完成。

它不关注文档的生成,代码规范的检查,代码覆盖率都没有。它的项目配置更集中,全部在 文件中, 是什么呢?它是一种配置文件的格式 Tom's Obvious, Minimal Language 。

有些类似 NodeJS 的 文件,比如 poetry add, poetry install 命令的行

其他主要的

能执行任何系统命令,只是它会在它要的虚拟环境中执行。所以可以想见, 的项目要生成文档或覆盖率都必须用 命令来支持 , 或 。

在 sample 目录(与 pyproject.toml 文件平级)中创建文件 , 内容为

然后在 中写上

再执行

就会输出 "hello poetry"。

如此通过对以上四个工具的认识,项目结构的复杂度由 cookiecutter-pyproject -> PyScaffold -> PyBuilder -> Poetry 依次降低,使用的难度大略也是相同的顺序!

以上就是本次分享的全部内容,想学习更多Python技巧,欢迎持续关注六星源课堂

相关文章

网友评论

      本文标题:4 个Python项目管理与构建工具,程序员练手必备!

      本文链接:https://www.haomeiwen.com/subject/lopenrtx.html