【问题标题】:How to use Python distutils?如何使用 Python distutils?
【发布时间】:2008-08-27 05:03:07
【问题描述】:

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

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

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

这里有一些有用的链接

【问题讨论】:

    标签: python linux installation debian distutils


    【解决方案1】:

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

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

    #!/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']) 
              ])
    

    【讨论】:

    • data_files 路径可以是绝对路径吗?我有 ValueError: path '/etc/Package3' cannot be absolute
    • “Initech”加 1 - 唯一更好的是“Plas-trol-tech”
    【解决方案2】:

    apt-get install python-stdeb

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          Kamaelia setup.py

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

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

          【讨论】:

            猜你喜欢
            • 2011-04-18
            • 1970-01-01
            • 2010-09-23
            • 2023-04-11
            • 2010-11-28
            • 2023-03-29
            • 2022-01-21
            • 2010-10-18
            • 1970-01-01
            相关资源
            最近更新 更多