我正潜入打包Python应用程序的世界,并设法进入这种混乱的状态,因为我要处理的所有概念和选项,我的脑袋开始转起来。在
问题:
我需要完成什么?从git服务器上的源代码部署Python项目。部署工具应该获取并安装所有依赖项,其中大多数依赖项可以通过PIP获得,其中一个需要通过Git获取和安装。最终结果应该可以通过Pip安装,因此我可以做如下操作:
[~] git clone git://some/path/project.git
[~] pip install project/
目前我正试图让Distutils2做我想做的事,但看起来设置.py使用'generate setup'命令生成的命令不能与Pip一起播放。在
我想用Distutils2,因为它应该是所有未来的证明。但是所有这些工具的各种文档都是可怕的(准确的信息和过时的不准确的信息混合在一起),让人怀疑自己的理智。在
那我该怎么办?坚持住distutils和setup.py?或者我需要看看像Buildout这样的东西吗?在
这位好心的回答者能否说明一下我应该如何使用特定的工具(例如:使用Distutils2部署代码,使用PIP安装依赖项,对于git依赖项,编写一个脚本并将所有东西粘在一起做XYZ)。在
编辑:我使用的是Distutils2 1.0a4,它似乎与文档不兼容。在
编辑2:重新编排问题的格式,使我的问题更清楚。在
这是我第四次尝试打破Python的打包和分发工具链。我不想让其他人帮我做我的工作,但是对于新手来说,几乎不可能破解一个特定工具应该做什么,它从哪里开始,另一个工具在哪里结束。尤其是因为工具之间的功能重叠。我不在硅谷,周围都是圣人,他们可以引导我进入秘密,公开的文件是没有用的。在
最终编辑: 虽然在开始这个问题时,我并没有真正考虑用Buildout替换virtualenv。但在做研究的时候,我意识到了一些我一直都知道的事情,只是没有完全明白。Python打包和部署自动化有很多种方法。还有很多工具可以帮助你完成任务。然而,虽然这些工具之间存在显著的功能重叠,但工具链一直在不断演变,迄今为止还没有明确的“标准最佳实践”。分销工具链的军备竞赛仍处于白热化阶段,尚未出现明显的胜利者。这可能会让我们这些傻瓜感到困惑,因为他们认为Python中的大多数东西都能正常工作。我所追求的(distutils/setuptools+pip+virtualenv以一种构建的方式或者甚至是与Buildout半集成)当然是可以修改的,但是它没有多大意义,不是因为它不可能,而是因为没有人这样做。如果你需要这种复杂程度,那么你就需要承诺。就我个人而言,我决定离开virtualenv(为了这个项目)而拥抱Buildout。在
这并不难:安装Jenkins并使用pip的requirements.txt files来定义项目所需的包。之后,您可以在Jenkins中配置一个构建来执行各种任务,包括安装所需的包。它可以从您的存储库中获取源代码并安装并构建整个项目。
看一下buildout;再加上一个名为mr.developer的构建插件,您可以将一个部署系统组合起来,完成您所要求的所有任务。
web上有很多关于构建配置的示例和演示,下面是一些可以帮助您入门的示例和演示:
关于构建的介绍性演示:http://www.slideshare.net/djay/buildout-how-to-maintain-big-app-stacks-without-losing-your-mind
包括演示文稿的YouTube视频,以便您收听。
在how to use buildout to develop a Django application上发表了精彩的博客文章。
包括如何构建和设置.py相互作用。
planet.plone.org:https://github.com/plone/planet.plone.org/blob/master/buildout.cfg的配置
这将构建一个包含配置、样式、apache配置和cronjobs的venus RSS aggregator,并根据需要引入鸡蛋。
Plone核心开发构建:https://github.com/plone/buildout.coredev
复杂的构建,它引入了开发Plone CMS所需的所有源;这是一个复杂的野兽,但它展示了你可以用
mr.developer
做什么。相关问题 更多 >
编程相关推荐