安装依赖的最佳实践是什么?

5 投票
2 回答
3391 浏览
提问于 2025-04-16 16:48

我在想一个好的方法来发布我的应用程序,它是一个Python包。安装我的包很简单,只需要用到Python的distutils工具。

问题在于我的包依赖的那些其他库。如果这些依赖也是Python包,我可以很轻松地用distutils来处理,但如果是非Python包呢?有些非Python包在构建和安装时需要特别小心,因为需要设置一些特殊的编译选项等等……

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

  1. 写一个make文件,下载并安装依赖
  2. 写一个脚本来安装依赖
  3. 不自动化最好。直接写个手册告诉用户怎么安装依赖
  4. ???

提前感谢任何回答或建议

2 个回答

5

我们有一个项目叫做 Kivy(http://kivy.org/),也遇到了同样的问题。在项目初期,我们做了一个全包,里面包含了所有依赖的设置。不过用户在安装时需要不停地点击“下一步”按钮来处理每一个依赖(在 Windows 上)。所以现在,我们自己管理这些依赖了。

除了与 Linux 相关的部分(因为我们所有的依赖在 Linux 上已经打包好了),我们采取了一个方法,给每个平台准备一个叫做“portable-deps”的压缩包。然后,我们有一个脚本来:

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

对于 MacOSX,我们有一个特殊的情况,压缩包是一个带有简单界面的 dmg 文件。

好处是用户不需要担心依赖问题,而开发者也清楚项目里包含了哪些二进制文件 :)

另外,我们有用于 distutils 的 build_portable 命令:

4

最重要的是要考虑你的读者是谁。

他们是不是对技术比较感兴趣,能否轻松理解如何自己搭建所需的工具?如果是这样,那就选择(3)。如果不是,写一个Python脚本、Shell脚本或者Makefile来自动完成这个任务可能更合适。选择你最擅长的方式来写就可以了。

撰写回答