我正在潜入包装Python应用程序的世界,并设法进入这种混乱状态,由于我应该处理的所有概念和选项,我的头开始旋转。
问题:
我需要完成什么? 从位于git服务器上的源部署我的Python项目。部署工具应该获取并安装所有依赖项,其中大部分都可以通过PIP获得,一个需要通过Git获取和安装。最终结果应该可以通过Pip安装,所以我可以做一些事情:
[~] git clone git://some/path/project.git
[~] pip install project/
上下文 目前我正在努力让Distutils2做我想做的事,但似乎setup.py使用' generate-setup'命令不与Pip一起玩。
我想使用Distutils2,因为它应该是所有人的未来证明。但是关于所有工具的各种文档都非常糟糕(准确的信息与过时和不准确的信息混合在一起),这会让一个人质疑他的理智。
那我该怎么办?坚持distutils和setup.py?或者我是否需要看看像Buildout这样的东西?
善良的回答者能否列出我应该用特定工具做的事情(例如:使用Distutils2部署代码,使用PIP安装依赖项,git依赖项编写脚本并将所有内容粘合在一起做XYZ)。
编辑:我使用的是Distutils2 1.0a4,它似乎与文档不兼容。
Edit2:重新格式化问题,使我的问题更加清晰。
Edit3:这是我打破Python打包和分发工具链的第四次尝试。我不是想让其他人为我做我的工作,但是对于一个新手来说,几乎不可能破解特定工具应该做什么,它开始的地方和另一个结束的地方。特别是因为工具之间的功能重叠。我不是位于硅谷周围的圣人,他们可以让我了解秘密,公开的文件是没用的。
最终编辑: 虽然在开始这个问题时我并没有考虑用Buildout替换virtualenv。但是在做研究的过程中,我意识到了我一直都知道的事情,但我并没有完全清楚地看到我。有关Python打包和部署自动化的方法有很多种。还有许多工具可以帮助您完成工作。然而,虽然这些工具之间存在显着的功能重叠,但工具链却在不断发展,到目前为止还没有明确的标准最佳实践"。分配工具链军备竞赛仍处于全面激烈状态,尚未出现明显的胜利者。这可能会让我们感到困惑,因为他们期望Python中的大部分内容都能正常工作。我所追求的(distutils / setuptools + pip + virtualenv以Buildout方式甚至与Buildout半集成)当然是可行的,但它没有多大意义,不是因为它不可能 - 而是因为没有人这样做。如果你需要这种复杂程度,那么你需要提交。就个人而言,我决定将virtualenv抛弃(对于这个项目)并拥抱Buildout。
答案 0 :(得分:7)
看看buildout;与名为mr.developer的buildout插件一起,您可以将一个部署系统组合在一起,完成您所要求的一切。
网上有关于buildout配置的大量示例和演示文稿,以下是一些可以帮助您入门的示例和演示文稿:
有关buildout的简介: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上的优秀博文。
包含有关buildout和setup.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
做什么。
答案 1 :(得分:1)
不一定非常困难:安装Jenkins并使用pip的requirements.txt files来定义项目所需的软件包。之后,您可以在Jenkins中配置构建以执行各种任务,包括安装所需的软件包。它可以从您的存储库中获取源代码并安装+构建整个项目。