Distutils、Distutils2、pip和requirements

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,它似乎与文档不兼容。 编辑2:重新格式化问题以更清楚地表达我的问题是关于什么的。 编辑3:这是我第四次尝试打破Python的打包和分发工具链。我不是在让别人替我工作,但对于新手来说,几乎不可能弄清一个特定的工具应该做什么,从哪里开始,以及另一个工具从哪里结束。特别是由于工具之间的功能重叠。我不在硅谷被智者包围,他们可以将我引入秘密中,公开可用的文档也没有用。 最终编辑: 虽然我一开始并没有考虑用Buildout替换virtualenv。但是在做研究时,我意识到了一些我一直知道但没有完全清晰地想到的东西。有很多关于Python打包和部署自动化的方法。还有许多工具可以帮助您完成这项工作。但是,尽管这些工具之间存在显著的功能重叠,但工具链不断发展,迄今为止还没有明确的“标准最佳实践”。分发工具链的竞争仍在白热化,尚未出现明确的胜利者。这可能会使我们这些新手感到困惑,因为我们期望Python中的大部分东西都能正常工作。我想要的(distutils / setuptools + pip + virtualenv以Buildout方式或与Buildout半集成)肯定是可行的,但这并不太合理,不是因为它不可能 - 而是因为没有人这样做。如果您需要这种复杂度水平,则需要承担风险。就我个人而言,我已决定放弃virtualenv(对于这个项目),并拥抱Buildout。
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7
看看 buildout 吧; 联合使用 buildout 插件 mr.developer,您可以组建一个部署系统,该系统将完成您所需的所有工作。 网络上有很多关于 buildout 配置的示例和演示文稿,以下是一些入门级别的示例:

即使这不是我真正寻找的,但你提供的链接集最终帮助我消除了关于Buildout的空白。谢谢。 - JanezStupar

1

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


Jenkins 能够安装项目是为了实现其目标:提供持续集成测试。但是将 Jenkins 用于部署任务则是过度杀伐!更好的工具可用时,这是一个相当沉重的包袱! - Martijn Pieters
“fabric”(http://fabfile.org)可用于部署。 - jfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,