25

我在 python 中编写了一个快速程序来将 gtk GUI 添加到 cli 程序。我想知道如何使用 distutils 创建安装程序。因为它只是一个命令行应用程序的 GUI 前端,所以它只能在 *nix 中运行,所以我不担心它是跨平台的。

我的主要目标是为 debian/ubuntu 用户创建一个 .deb 包,但我不了解 make/configure 文件。到目前为止,我主要是一名网络开发人员。

编辑:有谁知道一个使用 distutils 的项目,所以我可以看到它在运行,你知道,实际上尝试构建它?

这里有一些有用的链接

  • Ubuntu Python 打包指南

    本指南非常有帮助。我不知道在最初的 gooling 浪潮中我是怎么错过的。它甚至会引导您打包现有的 python 应用程序

  • Ubuntu MOTU 项目

    这是 ubuntu 的官方包维护项目。任何人都可以加入,并且有很多关于创建各种类型的包的教程和信息,其中包括上面的“python 打包指南”。

  • “Python distutils 到 deb?” - Ars Technica 论坛讨论

    根据这个对话,你不能只使用 distutils。它不遵循 debian 打包格式(或类似的格式)。我想这就是你需要 dh_make 的原因,如 Ubuntu Packaging guide 中所示

  • "distutils 的 bdist_deb 命令

    这个有一些有趣的讨论(这也是我找到 ubuntu 指南的方式)关于连接 zip 文件和 shell 脚本以创建某种通用可执行文件(任何带有 python 和 bash 的东西)。奇怪的。让我知道是否有人找到有关此做法的更多信息,因为我从未听说过。

  • deb 格式的描述以及 distutils 如何适应 - python 邮件列表

4

5 回答 5

14

请参阅distutils 简单示例。基本上就是这样,除了真正的安装脚本通常包含更多信息。不过,我还没有看到任何从根本上更复杂的东西。本质上,你只是给它一个需要安装的列表。有时你需要给它一些映射字典,因为源树和安装的树可能不一样。

这是一个真实的(匿名)示例:

#!/usr/bin/python 

from distutils.core import setup 

setup (name = 'Initech Package 3', 
          description = "Services and libraries ABC, DEF", 
          author = "That Guy, Initech Ltd", 
          author_email = "that.guy@initech.com", 
          version = '1.0.5', 
          package_dir = {'Package3' : 'site-packages/Package3'}, 
          packages = ['Package3', 'Package3.Queries'], 
          data_files = [ 
                       ('/etc/Package3', ['etc/Package3/ExternalResources.conf']) 
          ])
于 2008-08-27T05:12:47.643 回答
6

apt-get install python-stdeb

Python 到 Debian 源码包转换实用程序

这个包提供了一些工具,通过新的 distutils 命令 sdist_dsc 从 Python 包生成 Debian 包。为 Debian 软件包提供了自动默认值,但生成的软件包的许多方面都可以通过配置文件进行自定义。

  • pypi-install 将查询 Python 包索引 (PyPI) 中的包,下载它,从中创建一个 .deb,然后安装 .deb。
  • py2dsc 会将 distutils 构建的源 tarball 转换为 Debian 源包。
于 2011-01-17T19:00:23.223 回答
2

大多数 Python 程序将使用 distutils。Django是一个 - 见http://code.djangoproject.com/svn/django/trunk/setup.py

您还应该阅读文档,因为它非常全面并且有一些很好的示例。

于 2008-08-27T10:04:25.493 回答
2

我发现以下教程非常有帮助。它比 distutils 文档短,并解释了如何逐步设置典型项目。

于 2010-11-15T21:57:26.177 回答
1

一旦你掌握了它的窍门, distutils 真的不是那么难。这实际上只是放入一些元信息(程序名称、作者、版本等),然后选择要包含的文件。例如,这是一个来自相当复杂的 python 库的示例 distutils setup.py 模块:

卡梅利亚 setup.py

请注意,这不处理任何数据文件或诸如此类的东西,所以 YMMV。

另一方面,我同意 distutils 文档可能是 python 最糟糕的文档之一。它在某些领域极具包容性,但在其他领域却忽略了一些非常重要的信息。

于 2008-08-27T20:42:16.223 回答