В Python distutils - кто-нибудь знает, как его использовать?
Я написал быструю программу на python, чтобы добавить графический интерфейс gtk в программу cli. Мне было интересно, как я могу создать установщик с помощью distutils. Поскольку это просто интерфейс GUI для приложения командной строки, он работает только в *nix, поэтому я не беспокоюсь о том, что он кросс-платформенный.
моя главная цель-создать .пакет deb для пользователей debian / ubuntu, но я не понимаю make/configure файлов. До сих пор я в основном был веб-разработчиком.
спасибо помогите!
редактировать: кто-нибудь знает о проекте, который использует distutils, чтобы я мог видеть его в действии и, вы знаете, на самом деле попробовать его построить?
вот несколько полезных ссылок
-
Руководство По Упаковке Ubuntu Python
данное руководство очень полезная. Я не знаю, как я пропустил это во время моей первой волны gooling. Он даже проведет вас через упаковку существующего python применение
-
Это официальный пакет, поддерживающий проект в ubuntu. Любой может присоединиться, и есть много учебников и информации о создании пакетов всех типов, которые включают в себя вышеуказанное "руководство по упаковке python".
-
"язык Python distutils в deb?"- Обсуждение форума Ars Technica
согласно этому разговору, вы не можете просто использовать distutils. Он не соответствует формату упаковки debian (или что-то в этом роде). Я думаю, именно поэтому вам нужен dh_make, как видно из руководства по упаковке Ubuntu
-
" команда bdist_deb для distutils
У этого есть интересная дискуссия (это также то, как я нашел руководство ubuntu) о объединении zip-файла и сценария оболочки для создания какого-то универсального исполняемого файла (что-нибудь с python и bash). странный. Дайте мне знать если кто-нибудь найдет больше информации об этой практике, потому что я никогда не слышал об этом.
описание формата deb и как distutils вписываются в список рассылки python
5 ответов
посмотреть 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) для пакет, скачать его, создать .деб от его, а затем установить этот.дебютантка.
- py2dsc преобразует встроенный в distutils исходный tarball в Debian исходный пакет.
большинство программ Python будут использовать distutils. Джанго является one-see http://code.djangoproject.com/svn/django/trunk/setup.py
вы также должны прочитать документация, поскольку он очень всеобъемлющий и имеет несколько хороших примеров.
Я нашел следующее учебник чтобы быть очень полезным. Это короче, чем документация distutils и объясняет, как настроить типичный проект шаг за шагом.
distutils действительно не так сложно, как только вы получите повесить его. На самом деле это просто вопрос ввода некоторой метаинформации (имя программы, автор, версия и т. д.), а затем выбора файлов, которые вы хотите включить. Например, вот пример distutils setup.py модуль из прилично сложной библиотеки python:
обратите внимание, что это не касается каких-либо файлов данных или или еще чего-то, поэтому YMMV.
на другом обратите внимание, я согласен с тем, что документация distutils, вероятно, является худшей документацией python. В некоторых областях он чрезвычайно инклюзивен, но в других игнорирует действительно важную информацию.