Python distutils-有人知道如何使用它吗?

时间:2020-03-05 18:43:40  来源:igfitidea点击:

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

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

谢谢你的帮助!

编辑:有人知道使用distutils的项目,因此我可以在实际中看到它,并且我们知道实际上尝试构建它吗?

这里有一些有用的链接

  • Ubuntu Python打包指南该指南非常有用。我不知道在最初的咕咕声中我是怎么想念它的。它甚至会引导我们打包现有的python应用程序
  • Ubuntu MOTU项目这是ubuntu上的官方软件包维护项目。任何人都可以加入,并且有很多关于创建包的教程和各种类型的信息,其中包括上面的" python打包指南"。
  • " Python distutils可以调试吗?" -Ars Technica论坛讨论根据此对话,我们不能只使用distutils。它不遵循debian打包格式(或者类似的格式)。我想这就是为什么我们需要dh_make的原因,如《 Ubuntu包装指南》中所述
  • "一个用于distutils的bdist_deb命令。这个讨论了一些有趣的讨论(也是我找到ubuntu指南的方法),有关如何将一个zip文件和一个shell脚本连接起来以创建某种通用可执行文件(包括python和bash的任何东西)。让我知道是否有人找到有关此做法的更多信息,因为我从未听说过。
  • deb格式的说明以及distutils如何适合-python邮件列表

解决方案

回答

请参阅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 = "[email protected]", 
          version = '1.0.5', 
          package_dir = {'Package3' : 'site-packages/Package3'}, 
          packages = ['Package3', 'Package3.Queries'], 
          data_files = [ 
                       ('/etc/Package3', ['etc/Package3/ExternalResources.conf']) 
          ])

回答

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

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

回答

一旦掌握了distutils,它实际上并没有那么困难。实际上,只需输入一些元信息(程序名称,作者,版本等),然后选择要包括的文件即可。例如,这是一个来自相当复杂的python库的示例distutils setup.py模块:

Kamaelia setup.py

请注意,这不会处理任何数据文件,也不会处理任何数据文件,因此不会处理YMMV。

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

回答

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