如何使用Python的distutils?
我写了一个简单的Python程序,为一个命令行程序添加了一个图形用户界面(GUI)。我想知道如何使用distutils来创建一个安装包。因为它只是一个命令行应用的图形界面,所以它只在*unix系统上运行,我并不担心跨平台的问题。
我的主要目标是为Debian/Ubuntu用户创建一个.deb包,但我对make和configure文件不太了解。到目前为止,我主要是做网页开发的。
编辑:有没有人知道一个使用distutils的项目,这样我可以看看它是怎么工作的,顺便试着构建一下?
这里有一些有用的链接
-
这个指南非常有用。我不知道我当初怎么会错过它。它甚至会指导你如何打包一个现有的Python应用。
-
这是Ubuntu的官方软件包维护项目,任何人都可以加入,还有很多关于创建各种类型软件包的教程和信息,包括上面的“Python打包指南”。
“Python distutils到deb?” - Ars Technica论坛讨论
根据这个讨论,你不能仅仅使用distutils。它不符合Debian的打包格式(或者类似的东西)。我想这就是为什么在Ubuntu打包指南中需要使用dh_make的原因。
-
这个讨论很有趣(也是我找到Ubuntu指南的方式),讨论了如何将一个zip文件和一个shell脚本连接起来,创建某种通用可执行文件(任何带有Python和bash的东西)。挺奇怪的。如果有人找到更多关于这个做法的信息,请告诉我,因为我从来没听说过。
5 个回答
apt-get install python-stdeb
这是一个用来把Python包转换成Debian源包的工具。
这个工具包提供了一些工具,可以通过一个新的命令(sdist_dsc)来从Python包生成Debian包。虽然系统会自动设置一些默认选项,但你可以通过配置文件来定制生成的包的很多方面。
- pypi-install会去查询Python包索引(PyPI),找到你需要的包,下载它,然后从中创建一个.deb文件并安装这个文件。
- py2dsc可以把用distutils构建的源代码压缩包转换成Debian源包。
可以看看这个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'])
])