我正在潜入包装Python应用程序的世界,并设法进入这种混乱状态,由于我应该处理的所有概念和选项,我的头开始旋转 .
Question:
What do I need to accomplish? 从位于git服务器上的源部署我的Python项目 . 部署工具应该获取并安装所有依赖项,其中大部分都可以通过PIP获得,一个需要通过Git获取和安装 . 最终结果应该可以通过Pip安装,所以我可以做一些事情:
[~] git clone git://some/path/project.git
[~] pip install project/
Context: 目前我正在尝试让Distutils2做我想做的事,但似乎使用'generate-setup'命令制作的setup.py不能与Pip一起使用 .
我想使用Distutils2,因为它应该是所有人的未来证明 . 但是关于所有工具的各种文档都是可怕的(准确的信息与过时和不准确的信息混合在一起),这会让一个人质疑他的理智 .
所以我该怎么做?坚持distutils和setup.py?或者我需要看一下像Buildout这样的东西?
那个问题的回答者可以用特定工具列出我应该做的事情(例如:使用Distutils2部署代码,使用PIP安装依赖项,git依赖项编写脚本并将所有内容粘合在一起做XYZ) .
编辑:我使用的是Distutils2 1.0a4,它似乎与文档不兼容 .
编辑2:重新格式化问题,使我的问题更清楚 .
Edit3:这是我打破Python打包和分发工具链的第四次尝试 . 我不是想让其他人为我做我的工作,但是对于一个新手而言,几乎不可能破解特定工具应该做什么,它开始的地方和另一个结束的地方 . 特别是因为工具之间的功能重叠 . 我不是位于硅谷周围的圣人,他们可以让我知道秘密,公开的文件是没有用的 .
Final Edit: 虽然我没有完全清楚地来找我 . 有关Python打包和部署自动化的方法有很多种 . 还有许多工具可以帮助您完成工作 . 然而,虽然这些工具之间存在显着的功能重叠,但工具链却在不断发展,到目前为止还没有明确的说明.2411706_ . 分配工具链军备竞赛仍处于全面激烈状态,尚未出现明显的胜利者 . 这可能会让我们感到困惑,他们希望Python中的大部分内容都能正常工作 . 我所追求的(distutils / setuptools pip virtualenv以Buildout方式甚至与Buildout半集成)当然是可行的,但它没有多大意义,不是因为它不可能 - 而是因为没有人这样做 . 如果你需要这种复杂程度,那么你需要提交 . 就个人而言,我决定将virtualenv抛弃(对于这个项目)并拥抱Buildout .
2 回答
看看buildout;与一个名为mr.developer的buildout插件一起,您可以组合一个部署系统,它将完成您要求的所有操作 .
有关网络上的buildout配置的大量示例和演示文稿,以下是一些可以帮助您入门的示例和演示文稿:
包括演示文稿的YouTube视频,以便您可以一起收听 .
包括有关buildout和setup.py如何相互作用的详细信息 .
这构建了一个venus RSS aggregator配置,样式,apache配置和cronjobs,根据需要拉入鸡蛋 .
复杂的扩建,可以提供开发Plone CMS所需的所有资源;这是一个复杂的野兽,但它展示了你可以用
mr.developer
做什么 .它并不困难:安装Jenkins并使用pip的requirements.txt files来定义项目所需的包 . 之后,您可以在Jenkins中配置构建以执行各种任务,包括安装所需的软件包 . 它可以从您的存储库中获取源代码并安装构建整个项目 .