我正在潜入打包 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。