8

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

问题:

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

[~] git clone git://some/path/project.git
[~] pip install project/

背景: 目前我正试图让 Distutils2 做我想做的事,但似乎使用“generate-setup”命令制作的 setup.py 不能与 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。

4

2 回答 2

7

看看buildout;与一个名为mr.developer的构建插件一起,您可以构建一个部署系统,可以满足您的所有要求。

网上有很多关于构建配置的示例和演示,这里有一些可以帮助您入门:

于 2012-06-11T09:00:11.320 回答
1

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

于 2012-06-11T09:02:52.023 回答