Вопрос

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

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

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

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

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

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

  • Проект Ubuntu MOTU

    Это официальный проект поддержки пакета в Ubuntu.Присоединиться может каждый, и существует множество учебных пособий и информации о создании пакетов всех типов, включая приведенное выше «Руководство по упаковке Python».

  • "Python Distutils для Деб?" - Обсуждение Ars Technica Forum

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

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

    Здесь есть интересное обсуждение (именно так я нашел руководство по Ubuntu) об объединении zip-файла и сценария оболочки для создания какого-то универсального исполняемого файла (что угодно, связанное с 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 = "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

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

  • PYPI-Install запросит индекс пакета Python (PYPI) для пакета, загрузите его, создаст из него .deb, а затем установит .deb.
  • PY2DSC преобразует исходную Tarball, созданный Distutils, в исходный пакет Debian.

Большинство программ Python используют distutils. Джанго один - см. http://code.djangoproject.com/svn/django/trunk/setup.py

Вам также следует прочитать документация, поскольку он очень обширен и содержит несколько хороших примеров.

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

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

Камаэлия setup.py

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top