Подтвердить что ты не робот

Как использовать Python distutils?

Я написал краткую программу на python, чтобы добавить GUI GUI в программу cli. Мне было интересно, как я могу создать установщик, используя distutils. Поскольку это просто интерфейс GUI для приложения командной строки, он работает только в * nix, так что я не беспокоюсь о том, что это кросс-платформа.

моя главная цель - создать пакет.deb для пользователей debian/ubuntu, но я не понимаю файлы make/configure. Я до сих пор был веб-разработчиком.

edit: Кто-нибудь знает проект, который использует distutils, чтобы я мог видеть его в действии и, вы знаете, на самом деле пытаетесь его построить?

Вот несколько полезных ссылок

  • Руководство по упаковке Ubuntu Python

    Это руководство очень полезно. Я не знаю, как я пропустил это во время моей начальной волны. Он даже проводит вас через упаковку существующего приложения python

  • Проект Ubuntu MOTU

    Это официальный пакет, поддерживающий проект на ubuntu. Любой может присоединиться, и есть много учебников и информации о создании пакетов, всех типов, которые включают вышеупомянутый "руководство по упаковке python".

  • "Python distutils to deb?" - Обсуждение форума Ars Technica

    Согласно этому разговору, вы не можете просто использовать distutils. Он не соответствует формату упаковки debian (или что-то в этом роде). Я предполагаю, что вам нужен dh_make, как показано в руководстве по упаковке Ubuntu

  • "Команда bdist_deb для distutils

    У этого есть интересное обсуждение (это также то, как я нашел руководство ubuntu) о конкатенации zip файла и сценария оболочки, чтобы создать какой-то универсальный исполняемый файл (что-нибудь с python и bash). странно. Дайте мне знать, если кто-нибудь найдет больше информации об этой практике, потому что я никогда не слышал об этом.

  • Описание формата deb и того, как distutils вписывается в список рассылки python

4b9b3361

Ответ 1

См. простейший пример distutils. Это в основном то, на что это похоже, кроме реальных сценариев установки, как правило, содержит немного больше информации. Однако я не видел никаких принципиально более сложных. По сути, вы просто даете ему список того, что нужно установить. Иногда вам нужно дать ему некоторое определение dicts, поскольку источник и установленные деревья могут быть не одинаковыми.

Вот пример реальной жизни (анонимный):

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

Ответ 2

apt-get install python-stdeb

Утилита преобразования исходного кода Python в Debian

В этом пакете содержатся некоторые инструменты для создания пакетов Debian из пакетов Python с помощью новой команды distutils, sdist_dsc. Для пакета Debian предусмотрены автоматические значения по умолчанию, но многие аспекты полученного пакета могут быть настроены через файл конфигурации.

  • pypi-install будет запрашивать индекс пакетов Python (PyPI) для пакет, загрузить его, создать из него .deb, а затем установить .deb.
  • py2dsc преобразует исходный tarball, созданный в distutils, в Debian исходный пакет.

Ответ 4

Я нашел следующее tutorial, чтобы быть очень полезным. Он короче документации distutils и объясняет, как постепенно настраивать типичный проект.

Ответ 5

distutils действительно не так уж сложно, как только вы получите его. Это просто вопрос ввода некоторой метаинформации (название программы, автора, версия и т.д.), А затем выбор файлов, которые вы хотите включить. Например, здесь образец distutils setup.py модуля из довольно сложной библиотеки python:

Kamaelia setup.py

Обратите внимание, что это не касается каких-либо файлов данных или или чего-то еще, поэтому YMMV.

С другой стороны, я согласен с тем, что документация distutils, вероятно, является частью документации худшего python. Он чрезвычайно инклюзивный в некоторых областях, но пренебрегает какой-то действительно важной информацией в других.