Mam aplikację Pythona, która ma być uruchomiona przez GUI, więc musi mieć plik .Desktop w / Usr / Share / Applications /. Aplikacja obsługuje tylko Linuksa. Zwykle PIP instaluje wszystkie pliki w jednym katalogu, ale możliwe jest określenie innych lokalizacji (np. Plik .desktop) w Setup.py za pomocą Data_Files = [].

Czy jest to uważane za dobre rozwiązanie w tym przypadku lub jest to coś, co powinno nastąpić tylko w pakiecie specyficznym dla dystrybucji (np .RPM / .deb / .ebuild)?

8
elya5 13 sierpień 2014, 15:25

2 odpowiedzi

Najlepsza odpowiedź

To brzmi mi do dobrego podejścia, ale być może zamiast umieszczać plik .desktop w folderze System szerokości /usr/share/applications/ Folder można umieścić plik w folderze aplikacji Użytkownicy w ~/.local/share/applications.

Nie wymagałoby to również podwyższonych uprawnień, aby uzyskać dostęp do katalogu rooted /user i jest to podatrzyżne.

0
Lix 13 sierpień 2014, 11:29

Tak, możesz zdefiniować ścieżkę instalacji swojego .desktop w skrypcie setup.py.

Możesz to zrobić, ponieważ wiesz, gdzie chcesz go zainstalować, jest to nie specyficzne dla dystrybucji. Jest luźno zdefiniowany przez Freedesktop specifications.

Zwykle pliki pulpitu znajdują się w tych katalogach:

  • /usr/share/applications
  • /usr/local/share/applications
  • ~/.local/share/applications

Nie ma tak naprawdę żadnego odniesienia, ale jeśli chcesz wiedzieć więcej, możesz spojrzeć na Specyfikacja wejścia na pulpit i Specyfikacja katalogu bazowego XDG.

Więc wiesz, że chcesz zainstalować w share/applications. Ale co z prefiksem przedtem ? Odpowiedź brzmi: ty, jako deweloper, nie musisz się o tym dbać. Do pakującego należy decyzja.

Więc oto jak robisz to w swoim setup.py.

from setuptools import setup

setup(
    name       = 'myapplication',
    version    = '0.1',
    packages   = ['myapplication'],
    data_files = [
        ('share/applications', ['data/org.myapplication.desktop']),
    ],
)

Jak widać, daje katalog (share/applications) jest względny . Cytujące pytony Skrypt konfiguracji zapisu:

Jeśli katalog jest ścieżką względną, jest interpretowany w stosunku do prefiksu instalacji (Sys.Prefiks Pythona do pakietów Pure-Python, Sys.exec_prefiks do pakietów zawierających moduły rozszerzeń).

Dzięki temu, gdy opakowanie ustawia prefiks instalacji (zwykle {x0}} lub /usr/local), plik pulpitu zostanie zainstalowany we właściwej lokalizacji.


BTW, mówienie o plikach pulpitu, pamiętaj, aby przeczytać część o Konwencje nazewnictwa:

... powinien śledzić konwencję "Reverse DNS", np. Org.example.fooviewer.desktop.

BTW2, w przeciwieństwie do tego, co zostało powiedziane na tej stronie, nie ma potrzeby bezwzględnej ścieżki w linii Exec twojego pliku. Spójrz na pliki zainstalowane w systemie, prawie nikt tego nie robił.

grep Exec= /usr/share/applications/*.desktop
6
elboulangero 9 czerwiec 2017, 16:14