Python distutils – 有谁知道如何使用它?

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

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

谢谢你的帮助!

编辑 :有谁知道一个项目,使用distutils,所以我可以看到它的行动,而且,你知道,实际上尝试build设呢?

这里有一些有用的链接

  • Ubuntu的Python包装指南

    本指南非常有帮助。 我不知道我在最初的一波鹅卵石中错过了它。 它甚至引导你打包现有的python应用程序

  • Ubuntu的MOTU项目

    这是Ubuntu的官方包维护项目。 任何人都可以join,有很多关于创build包的教程和信息,包括上面的“python包装指南”。

  • “Python纠结于deb? – Ars技术论坛讨论

    根据这个谈话,你不能只使用distutils。 它不遵循Debian的包装格式(或类似的东西)。 我想这就是为什么你需要在Ubuntu包装指南中看到的dh_make

  • “一个distutils的bdist_deb命令

    这一个有一些有趣的讨论(这也是我如何findUbuntu指南)关于连接一个zip文件和一个shell脚本创build某种通用的可执行文件(任何与python和bash的是)。 奇怪的。 让我知道,如果有人发现这个做法的更多信息,因为我从来没有听说过。

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

Solutions Collecting From Web of "Python distutils – 有谁知道如何使用它?"

看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']) ]) 

apt-get install python-stdeb

Python到Debian源码包转换工具

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

  • pypi-install将查询包的Python包索引(PyPI),下载它,从中创建一个.deb,然后安装.deb。
  • py2dsc会将一个distutils构建的源码tarball转换成Debian源码包。

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

你也应该阅读文档 ,因为它非常全面,并有一些很好的例子。

我发现以下教程是非常有用的。 它比distutils文档短,并解释了如何逐步建立一个典型的项目。

一旦你掌握了它,那真正的困难并不是那么困难。 这实际上只是放入一些元信息(程序名称,作者,版本等),然后选择你想包含的文件。 例如,以下是一个复杂的Python库distutils setup.py模块:

Kamaelia setup.py

请注意,这不处理任何数据文件或者什么,所以YMMV。

另外,我同意distutils文档可能是python最糟糕的文档。 在一些地区是极其包容的,但忽略了其他一些非常重要的信息。