【问题标题】:Best practice to install dependencies?安装依赖项的最佳实践?
【发布时间】:2011-08-16 20:47:57
【问题描述】:

我正在考虑一个很好的方法来发布我的应用程序,它是一个 python 包。使用 pythons distutils 包安装我的包很容易。

问题在于我的包所依赖的依赖项。如果依赖项是 python 包,我可以再次使用 distutils 轻松处理它们,但非 python 包?其中一些甚至在构建和安装它们时需要非常小心,因为需要设置非常特殊的编译器标志等等......

如果我想为用户自动执行安装过程,最好的方法是什么?

  1. 编写用于下载和安装依赖项的 make 文件
  2. 编写安装依赖项的脚本
  3. 最好没有自动化。只需编写一个手册,告诉用户如何安装 依赖关系
  4. ???

提前感谢任何答案或建议

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为它混合了不清楚、过于宽泛和基于意见的问题。没有单一的“最佳”方法来安装无法使用 Python 的包管理器安装的依赖项。最佳方法取决于特定的目标受众以及您可以假设他们可以使用的工具和知识。

标签: python installation dependencies


【解决方案1】:

我们有一个名为 Kivy (http://kivy.org/) 的项目,它有完全相同的问题。在早期阶段,我们已经完成了一个多合一的包,其中包括每个依赖项的每个设置。但是,对于每个部门(Windows),用户都有很多“下一步>”按钮可以单击...。所以现在,我们已经设法处理好依赖关系了。

除了与 linux 相关的(因为我们所有的 deps 都已经打包在“linux”上),我们采取了为每个平台管理我们命名为“portable-deps”的 zipfile 的方法。然后,我们有一个脚本:

  1. 下载portable-deps zip
  2. 包含我们项目的最新版本
  3. 在根目录下添加启动脚本
  4. 压缩根目录,并将压缩包重命名为project--.zip

对于 MacOSX 有一个特殊情况,其中 zip 是带有一点 UI 的 dmg。

好处是用户不必关心 deps,开发人员确切地知道项目交付了哪些二进制文件 :)

有关信息,我们有 distutils 的 build_portable 命令:

【讨论】:

    【解决方案2】:

    帮助您做出决定的最重要的事情是考虑您的受众群体。

    他们是否在技术上倾向于并且可能对按照说明如何自行构建依赖项感到满意?如果是这样,请使用(3)。如果没有,编写 python 或 shell 脚本,或 makefile 来自动化任务可能是要走的路。选择你觉得写作最舒服的那个。

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 2018-09-05
      • 2019-08-24
      • 2022-08-09
      • 2018-03-03
      • 2011-06-11
      • 2010-12-11
      • 2012-10-09
      相关资源
      最近更新 更多