Python 中有等同于 Java 中 Maven 的东西么?

我是一个 java 开发者/python 初学者,我十分怀念 maven 中的特性,特别是依赖管理和组建自动化(我的意思是你不构建,但是如何为部署创建一个包?)

是否有一个相当于实现这些特性的 Python?
注意: 我使用 python2.x

谢谢。

119857 次浏览

Python 使用 distutils 和 setuptools 进行依赖和打包。

下面是一个解释基础知识的教程: http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html

简而言之,您将拥有 setup.py 文件,它具有依赖项和脚本编译/安装信息,您可以使用它构建 egg、 dist tarball、二进制 tarball 等。

对于部署,除了 distutils/setuptools 之外,还可以看一下 皮普包裹(下面使用 setuptools)。它可以回滚失败的安装,也可以卸载(easy _ install/setuptools 中缺少的内容)。此外,您可以通过需求文本文件指定依赖项。

最好使用 viralenv 创建独立的项目环境,并使用 pip/easy _ install 管理依赖项。

没有直接匹配,但是,你能得到的最接近的结果是:

  • Buildout : 它可以设置封闭环境、下载/处理依赖项、初始化脚本等。它也建立在插件之上(他们称之为“食谱”)。几年前它还处于测试阶段的时候我用过它,可能从那时起它就已经进化了。和 Maven 一样,它也有学习曲线,但它也是最强大的。

其他产品是 Maven/zc.buildout 的子集:

你可能知道 Ant 和 shell 脚本,所以你也可以检查这些 Python 工具:

  • Fabric 帕弗: 增加风格的命令行任务运行程序。它们将传统的命令行执行封装在 python 中,并允许以更强大的方式管理各种任务(任务依赖、解释输出、在远程服务器中运行命令等)。基本上没有什么是 shell 脚本编程做不到的,但是在 python 中,它就没有那么神秘了。

我想指出的是 PyBuilder,它受到了 maven 的很大启发,但是在配置中使用了 python 而不是 XML,因此,恕我直言,它实际上是可读的。

有一个用于依赖关系管理的插件(在底层使用 pip 并区分构建和运行时依赖关系) ,与 maven 没有什么不同,您可以用一个命令运行整个构建生命周期。