【发布时间】:2011-10-29 22:48:08
【问题描述】:
有大量关于如何做到这一点的信息,但是由于“给猫剥皮的方法不止一种”,所有的教程/手册都涵盖了这个过程似乎做了一些与其他教程不同的假设,我仍然没有掌握它。
到目前为止,这是我认为我理解的。
- 我的最终目标应该是创建一个“二进制”.deb 包。这样的包将是平台无关的(32/64 位),因为所有 Python 程序都是如此。
- 要创建“二进制”包,我首先需要创建一个源包。
- 要创建源包,我可以使用
CDBS或debhelper。 Debhelper 是初学者的推荐方式。 - 创建源包的核心是在源目录中的
DEBIAN目录中填充许多文件,这些文件说明需要复制文件的位置、它们受制于什么版权和许可方案、它们具有什么依赖项等... - 第 4 步可以在很大程度上自动化
dh_makecommand 如果 Python 源代码还带有 distutils 的setup.py脚本。
现在我的问题:
- 我对流程的理解是否正确?我是否遗漏了什么,或者我做错了什么?
- 第 5 步确实让我更加困惑:特别是对我来说最模糊的两点是:
-
我如何编写一个安装独立程序的
setup.py脚本? 编辑: 独立程序我的意思是一个程序旨在由桌面用户使用(与 module 不同,我理解它是导入后由其他软件使用的功能集合)。在我的具体情况下,我实际上需要两个这样的“程序”:主软件和一个单独的实用程序(实际上是第二个“程序”,它应该与另一个程序在同一个包中)。 - 这种 DEB 包脚本的特殊性是什么?官方文档似乎只处理 RPM 和 Windows 的东西......
-
我如何编写一个安装独立程序的
顺便说一句:这些是迄今为止我能找到的最好的信息来源。如果你有什么比这更好的,请分享! :)
- Ubuntu's Python packaging guide
- Creating a .deb package from a python setup.py(它显示这些步骤,但它解释不足以让我跟随)
- ShowMeDo video on "creating a .deb package out of a python program"(它似乎不是最新的,并且 - 如果我做对了 - 将生成供个人使用的包,没有依赖关系 并且没有签名的变更日志和其他使其与 Debian 政策不兼容的关键数据)。
【问题讨论】:
-
在为二进制打包准备一个python程序之前,您需要为一般分发做好准备。那是
setup.py位。这与许多 GNU C/C++ 项目使用的autotools步骤相当,但特定于 python。这比听起来容易,阅读docs.python.org/distutils/index.html -
@TokenMacGuy - 谢谢,我已经大致了解(我的措辞可能不正确,但这是我描述的过程的第 5 部分)。令我困惑的是,在官方文档中,我找不到关于如何分发独立程序而不是模块的明确方法。也许这只是一个术语问题,而我所说的“独立程序”是一种特定类型的模块?
-
@mac:您可以安装脚本,即可执行文件来启动您的程序。见docs.python.org/distutils/setupscript.html#installing-scripts
-
@Thomas - 我以前读过,但我仍然感到困惑:我的程序有一个
main.py文件(我想你可能称之为“脚本”)和一系列模块和其他一些YAML 和 SVG 文件...我仍在努力寻找有关如何实现这一目标的明确文档。到目前为止我能找到的最好的是distutils tutorial,我还在学习... -
独立程序是指没有python作为依赖项的东西吗? Debian 和 Ubuntu 的最新版本都至少带有 python 2.6,因此如果您的代码与 2.6 兼容,那么正如您所建议的,“独立程序”实际上可能只是模块的一个特例。
标签: python debian packaging distutils debhelper