Python distutils、distutils2、pip和要求

Python distutils、distutils2、pip和要求,python,pip,distutils,buildout,Python,Pip,Distutils,Buildout,我正潜入打包Python应用程序的世界,并设法进入这种混乱状态,由于我要处理的所有概念和选项,我的头脑开始旋转 问题: 我需要完成什么?从位于git服务器上的源代码部署我的Python项目。部署工具应该获取并安装所有依赖项,其中大多数依赖项可以通过PIP获得,一个依赖项需要通过Git获取并安装。最终结果应该可以通过Pip安装,因此我可以执行以下操作: [~] git clone git://some/path/project.git [~] pip install project/ 上下文:

我正潜入打包Python应用程序的世界,并设法进入这种混乱状态,由于我要处理的所有概念和选项,我的头脑开始旋转

问题:

我需要完成什么?从位于git服务器上的源代码部署我的Python项目。部署工具应该获取并安装所有依赖项,其中大多数依赖项可以通过PIP获得,一个依赖项需要通过Git获取并安装。最终结果应该可以通过Pip安装,因此我可以执行以下操作:

[~] git clone git://some/path/project.git
[~] pip install project/
上下文: 目前,我正在尝试让Distutils2执行我想要的操作,但似乎setup.py使用“generateSetup”命令生成的文件不能与Pip一起使用

我想使用Distutils2,因为它被认为是最能证明未来的。但是关于所有工具的各种文档都是可怕的(准确的信息与过时和不准确的信息混合在一起),在某种程度上让一个家伙怀疑他的理智

那我该怎么办?是否坚持使用distutils和setup.py?或者我需要看看像Buildout这样的东西吗

这位好心的回答者能否列出我应该如何使用特定工具(例如:使用Distutils2部署代码,使用PIP安装依赖项,对于git依赖项,请编写脚本并通过XYZ将所有内容粘合在一起)

编辑:我正在使用Distutils2 1.0a4,它似乎与文档不兼容

编辑2:重新编排了问题的格式,以使我的问题更加清晰

Edit3:这是我第四次尝试打破Python的打包和分发工具链。我不想让其他人帮我做我的工作,但是对于一个新手来说,几乎不可能破解一个特定工具应该做什么,从哪里开始,从哪里结束。特别是由于工具之间的功能重叠。我不在硅谷,周围都是圣人,他们可以引导我了解这些秘密,公开的文件也没有用

最终编辑: 虽然我在开始这个问题时并没有真正考虑用Buildout替换virtualenv。但在做研究的时候,我意识到了一些我一直都知道的事情,只是没有完全弄清楚。Python打包和部署自动化有很多方法。还有很多工具可以帮助你完成工作。然而,尽管这些工具之间存在着重大的功能重叠,但工具链一直在不断发展,迄今为止还没有明确的“标准最佳实践”。分销工具链军备竞赛仍在激烈进行,尚未出现明确的胜利者。这可能会让我们这些noobs感到困惑,他们认为Python中的大多数狗屎都能正常工作。我所追求的(distutils/setuptools+pip+virtualenv以构建方式,甚至是与构建的半集成)当然是可以实现的,但它没有多大意义,不是因为它不可能实现,而是因为没有人能够做到。如果您需要这种复杂程度,那么您需要承诺。就我个人而言,我决定离开virtualenv(为了这个项目),拥抱Buildout;与一个名为的构建插件一起,您可以构建一个部署系统,该系统将完成您要求的所有操作

web上有很多关于构建配置的示例和演示,下面是一些示例和演示,可以帮助您入门:

  • 关于构建的介绍性演示:

    包括演示文稿的YouTube视频,因此您可以收听

  • 优秀的博客文章

    包括有关buildout和setup.py如何相互作用的详细信息

  • 以下各项的配置:

    这将构建一个包含配置、样式、apache配置和cronjobs的脚本,并根据需要引入鸡蛋

  • 核心开发构建:

    复杂的构建,吸引开发Plone CMS所需的所有资源;这是一个复杂的野兽,但它展示了你可以用
    mr.developer
    做什么


这并不困难:安装并使用pip来定义项目所需的软件包。之后,您可以配置内置Jenkins以执行各种任务,包括安装所需的软件包。它可以从您的存储库中获取源代码并安装并构建整个项目。

Jenkins可以安装项目这一事实是其自身目标的一个要求:提供持续的集成测试。但是使用Jenkins进行部署任务是一种巨大的过度使用!当有更好的工具可用时,这是一个相当大的包!可以用于部署即使这不是我真正想要的,你收集的链接最终清除了我头脑中关于构建的空白。非常感谢。