Wie zu verteilen `.desktop` Dateien und Symbole für ein Python-Paket in Gnome (mit distutils oder Setuptool)?
-
20-08-2019 - |
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?
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 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 DistUtilsExtra.auto
Modul automatisch
--user
sowie systemweite Installation. Im Vergleich zu DistUtilsExtra
, es in ihrem Umfang schmaler ist und IMHO mehr pythonic (explicit ist besser als implizit).