Как распространять файлы и значки `.desktop` для пакета Python в Gnome (с distutils или setuptools)? - PullRequest
9 голосов
/ 02 февраля 2009

В настоящее время я использую автоинструменты для сборки / установки и упаковки своего проекта, но мне бы очень хотелось перейти к чему-то более «питоническому».

Мой проект состоит из двух сценариев, одного модуля, двух описаний графического интерфейса пользователя glade и двух файлов .desktop. В настоящее время это чистый проект на Python, хотя он скоро изменится.

Глядя на setuptools, я легко вижу, как обращаться со всем, кроме файлов .desktop; они должны оказаться в определенном каталоге, чтобы Gnome мог их найти.

Является ли использование distuils / setuptools хорошей идеей для начала?

Ответы [ 4 ]

4 голосов
/ 09 июня 2014

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

Не знаю, какой предпочтительный способ справиться с этим ...

Я использовал следующий setup.py файл (полная версия здесь ):

from setuptools import setup

setup(
  # ...
  data_files=[
    ('share/icons/hicolor/scalable/apps', ['data/mypackage.svg']),
    ('share/applications', ['data/mypackage.desktop'])
  ],
  entry_points={
    'console_scripts': ['startit=mypackage.cli:run']
  }
)

Колодец стартового скрипта entry_points работает. Но data_files находится в файле яйца, а не в указанных папках, поэтому оболочка рабочего стола не может получить к ним доступ.

Чтобы обойти это, я использовал следующий setup.cfg файл:

[install]
single-version-externally-managed=1
record=install.txt

Это работает. Оба файла данных созданы в нужном месте, и файл .desktop распознается Gnome.

1 голос
/ 26 января 2015

Я создал https://pypi.python.org/pypi/install-freedesktop. Он автоматически создает файлы .desktop для точек входа gui_scripts, которые можно настроить с помощью аргумента настройки, и поддерживает --user, а также общесистемную установку. По сравнению с DistUtilsExtra он более узок по объему и ИМХО более питоничен (явный лучше, чем неявный).

1 голос
/ 18 февраля 2010

Вы можете попробовать использовать python-distutils-extra . Модуль DistUtilsExtra.auto автоматически поддерживает файлы .desktop, а также файлы Glade / GtkBuilder .ui, модули и скрипты Python, файлы данных misc и т. Д.

Должно работать как с Distutils, так и с Setuptools.

1 голос
/ 02 февраля 2009

В общем, да - все лучше, чем автоинструменты при сборке проектов Python.

У меня пока хороший опыт работы с setuptools. Однако установка файлов в фиксированные местоположения не является сильной стороной setuptools - в конце концов, это не то, что нужно для создания установщиков для приложений Python, а для распространения библиотек Python.

Для установки файлов, которые не являются файлами данных приложения (например, изображения, файлы пользовательского интерфейса и т. Д.), Но обеспечивают интеграцию в операционную систему, лучше использовать реальный формат упаковки (например, RPM или deb).

Тем не менее, ничто не мешает вам иметь процесс сборки, основанный на setuptools и небольшом файле make для установки всего на свое место.

...