Как использовать 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
Ответы
Ответ 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
исходный пакет.
Ответ 3
Большинство программ Python будут использовать distutils. Django - это один - см. http://code.djangoproject.com/svn/django/trunk/setup.py
Вы также должны прочитать документацию, поскольку она очень всеобъемлющая и имеет несколько хороших примеров.
Ответ 4
Я нашел следующее tutorial, чтобы быть очень полезным. Он короче документации distutils и объясняет, как постепенно настраивать типичный проект.
Ответ 5
distutils действительно не так уж сложно, как только вы получите его. Это просто вопрос ввода некоторой метаинформации (название программы, автора, версия и т.д.), А затем выбор файлов, которые вы хотите включить. Например, здесь образец distutils setup.py модуля из довольно сложной библиотеки python:
Kamaelia setup.py
Обратите внимание, что это не касается каких-либо файлов данных или или чего-то еще, поэтому YMMV.
С другой стороны, я согласен с тем, что документация distutils, вероятно, является частью документации худшего python. Он чрезвычайно инклюзивный в некоторых областях, но пренебрегает какой-то действительно важной информацией в других.