Как использовать Python distutils? - PullRequest
24 голосов
/ 27 августа 2008

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

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

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

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

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

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

  • Проект Ubuntu MOTU

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

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

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

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

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

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

Ответы [ 5 ]

13 голосов
/ 27 августа 2008

См. Простой пример 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']) 
          ])
6 голосов
/ 17 января 2011

apt-get install python-stdeb

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

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

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

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

2 голосов
/ 27 августа 2008

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

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

1 голос
/ 28 августа 2008

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

Kamaelia setup.py

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...