2010-07-24 73 views
108

我是一名java开发人员/ python初学者,我缺少我的maven特性,尤其是依赖管理和构建自动化(我的意思是你不构建,但是如何创建一个用于部署的包? )蟒蛇的Maven等价物

是否有一个python等价物来实现这些功能?
注意:我用python 2.x

谢谢。

回答

52

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

继承人这也解释了基础知识教程:http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html

总之,你将有setup.py文件,它具有依赖性和脚本编译/安装的信息,你可以建立鸡蛋,DIST压缩包,二进制压缩包等用它。

+5

由于电子离开马克朝圣者关闭该网站,这里是[activestate](http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html)的镜像。 – jiggy 2012-02-04 20:18:28

+1

我建议将其更新为指向[The Python Packaging User Guide](https://python-packaging-user-guide.readthedocs.io/en/latest/),因为它现在是权威指南。 – kojiro 2016-05-24 20:16:41

8

对于部署,除distutils/setuptoos之外,还请查看pip package(使用下面的setuptools)。它可以回滚失败的安装并卸载(easy_install/setuptools中缺少的东西)。另外,您可以通过需求文本文件指定依赖关系。

5

使用virtualenv创建独立的项目环境并使用pip/easy_install管理依赖关系很好。

+1

很伤心:) – reversiblean 2017-12-24 09:39:48

32

没有直接匹配。然而,最近的就可以得到:

  • zc.buildout:它可以设置封闭的环境中,下载/手柄的依赖,初始化脚本等它还基于插件(或“配方”,他们称之为他们)。几年前我曾经在beta阶段使用过它,可能从那时起它就有了进化。有和Maven一样的学习曲线,但它也是最强大的。

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

Y OU大概知道蚂蚁和shell脚本,所以你也可以检查这些Python工具:

  • FabricPaver:添加了香精的命令行任务亚军。它们将传统的命令行执行封装在Python中,并允许以更强大的方式管理各种任务(任务依赖关系,解释输出,在远程服务器中运行命令等)。基本上没有什么你不能使用shell脚本,但是在python中,它不那么神秘。
11

我想指出PyBuilder这在很大程度上受到行家的启发,但使用Python,而不是XML进行配置,所以它实际上是可读的,恕我直言。

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