160

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

是否有等效于实现这些功能的python?
注意:我使用 python 2.x

谢谢。

4

5 回答 5

80

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

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

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

于 2010-07-24T06:45:49.090 回答
42

没有直接匹配。但是,您可以获得最接近的:

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

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

您可能知道 Ant 和 shell 脚本,因此您还可以查看以下 Python 工具:

  • FabricPaver:增加了风味的命令行任务运行器。它们将您的传统命令行执行包装在 python 中,并允许以更强大的方式管理各种任务(任务依赖、解释输出、在远程服务器中运行命令等)。基本上没有什么你不能用 shell 脚本做的,但在 python 中,它不那么神秘。
于 2011-06-14T13:52:53.387 回答
17

我想指出PyBuilder,它深受 maven 的启发,但使用 python 而不是 XML 进行配置,所以它实际上是可读的,恕我直言。

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

于 2014-05-01T17:04:54.037 回答
9

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

于 2010-07-24T06:56:16.153 回答
6

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

于 2010-12-30T06:37:22.843 回答