python - distutils、distutils2、pip 和要求

标签 python pip distutils buildout

很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center .




9年前关闭。




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

问题:

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

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

上下文:
目前我正试图让 Distutils2 做我想做的事,但似乎使用 'generate-setup' 命令制作的 setup.py 不能与 Pip 一起使用。

我想使用 Distutils2,因为它应该是所有 future 的最佳证明。但是关于所有工具的各种文档都非常糟糕(准确的信息与过时和不准确的信息混合在一起),让人怀疑他的理智。

所以我该怎么做?坚持使用 distutils 和 setup.py?或者我需要看看像 Buildout 这样的东西吗?

好心的回答者能否列出我应该使用特定工具做什么(例如:使用 Distutils2 部署您的代码,使用 PIP 安装依赖项,对于 git 依赖项编写脚本并将所有内容粘合在一起做 XYZ)。

编辑:我使用的是 Distutils2 1.0a4,它似乎与文档不兼容。

Edit2:重新格式化问题以更清楚地说明我的问题的真正含义。

Edit3:这是我第四次尝试打破 Python 的打包和分发工具链。我并不是想让其他人为我做我的工作,但是对于一个新手来说,破解一个特定工具应该做什么,它从哪里开始,另一个在哪里结束几乎是不可能的。特别是因为工具之间的功能重叠。我不在硅谷,周围都是圣人,他们可以让我了解 secret ,公开的文件也没有用。

最终编辑:
虽然我在开始这个问题时并没有真正考虑用 Buildout 替换 virtualenv 。但是在进行研究时,我意识到了一些我一直都知道的事情,但我并没有完全清楚。 Python 打包和部署自动化有很多方法。还有许多工具可以帮助您完成工作。然而,虽然工具之间存在显着的功能重叠,但工具链一直在发展,到目前为止还没有明确的“标准最佳实践”。分发工具链军备竞赛仍在进行中,尚未出现明确的胜利者。这可能会让我们这些菜鸟感到困惑,因为他们期望 Python 中的大多数东西都能正常工作。我所追求的(distutils/setuptools + pip + virtualenv 以 Buildout 方式,甚至与 Buildout 半集成)当然是可行的,但它只是没有多大意义,不是因为它不可能 - 而是因为没有人这样做。如果您需要这种复杂程度,那么您需要做出 promise 。就我个人而言,我决定放弃 virtualenv(对于这个项目)并接受 Buildout。

最佳答案

看看buildout ;连同一个名为 mr.developer 的构建插件您可以组合一个部署系统来满足您的所有要求。

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

  • 关于扩建的介绍性介绍: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

    这将构建一个 venus RSS aggregator使用配置、样式、apache 配置和 cronjobs,根据需要拉入鸡蛋。
  • Plone核心开发 build :https://github.com/plone/buildout.coredev

    复杂的构建,包含开发 Plone CMS 所需的所有资源;这是一个复杂的野兽,但它展示了你可以用 mr.developer 做什么.
  • 关于python - distutils、distutils2、pip 和要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10976534/

    相关文章:

    python - 在通过 crontab 调用的脚本中运行 ssh/rsync 命令

    Python】将两个文本文件合二为一(逐行)

    Python 函数及其 __call__ 属性

    python - 我尝试使用我安装的 python 包,但出现此错误

    python - Docker类(class)教程,python pip失败

    python - 如何使用简单的预卸载脚本扩展 distutils?

    python - pep 420 setup.py 中的namespace_packages用途

    python - Matplotlib 错误 : Data is shown above spine with twinx()

    python - 捕获当前 python 环境的快照并在另一台机器上重新创建

    python - 将 Python 扩展安装到特定位置