Wie zu verteilen `.desktop` Dateien und Symbole für ein Python-Paket in Gnome (mit distutils oder Setuptool)?

StackOverflow https://stackoverflow.com/questions/501597

Frage

Zur Zeit verwende ich die Auto-Tools zu bauen / installieren und ein Projekt von mir zu verpacken, aber ich würde wirklich gerne etwas bewegen, die mehr „pythonic“ fühlen.

Ihr Projekt besteht aus zwei Skripte, ein Modul, zwei Lichtung GUI Beschreibungen und zwei .desktop-Dateien. Es ist derzeit ein reines Python-Projekt, obwohl das wahrscheinlich bald-ish ändern.

bei Setuptool Blick Ich kann leicht sehen, wie mit allem, was mit Ausnahme der .desktop-Dateien zu behandeln; sie müssen in einem bestimmten Verzeichnis am Ende, so dass Gnome sie finden kann.

Nutzt distuils / Setuptools eine gute Idee zu beginnen?

War es hilfreich?

Lösung

ich es geschafft, diese Arbeit zu bekommen, aber es fühlt sich ein bisschen für mich eher wie ein Abhilfe .

Sie wissen nicht, was die bevorzugte Art und Weise, dies zu handhaben ...

Ich habe die folgende setup.py Datei (Vollversion ist hier ):

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']
  }
)

Die Startskript Trog entry_points funktioniert. Aber die data_files wo in einer Ei-Datei setzen und nicht in dem Ordner angegeben, so dass sie nicht von dem Desktop-Shell zugegriffen werden können.

Um dies zu umgehen, habe ich die folgende setup.cfg-Datei:

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

Das funktioniert. Beide Dateien werden an der richtigen Stelle erstellt und die .desktop Datei wird von Gnome erkannt.

Andere Tipps

In der Regel ja -. Alles ist besser als Autotools, wenn Projekte Python Aufbau

Ich habe gute Erfahrungen mit Setuptool so weit. Allerdings Dateien in festen Positionen zu installieren ist nicht eine Stärke von Setuptool -. Denn es ist nicht etwas zu installaters für Python-Anwendungen zu bauen, sondern verteilt Python Bibliotheken

Für die Installation von Dateien, die nicht Anwendungsdaten-Dateien (wie Bilder, UI-Dateien usw.), aber die Integration in das Betriebssystem zur Verfügung stellt, sind Sie besser dran mit einem echten Verpackungsformat (wie RPM oder deb).

Das heißt, nichts stoppt, von Ihnen den Build-Prozess für auf Setuptools und eine kleine Make-Datei basiert, die alles in seinen rechtmäßigen Platz zu installieren.

Sie können versuchen, verwenden python-distutils-extra . Das DistUtilsExtra.auto Modul automatisch

Ich habe erstellt https://pypi.python.org/pypi/install-freedesktop . Es schafft .desktop-Dateien automatisch für den gui_scripts Einspeisepunkte, die durch ein Setup-Argument kann angepasst werden und unterstützt --user sowie systemweite Installation. Im Vergleich zu DistUtilsExtra, es in ihrem Umfang schmaler ist und IMHO mehr pythonic (explicit ist besser als implizit).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top