Spouštěč - Fedora 16 64-bit

Ahoj všem,

narazil jsem na problém, který je zřejmě triviální, ale bohužel se mi ho nedaří vyřešit, ani vygooglit. Prosím proto o radu, jak dál. Nainstaloval jsem aplikaci WikidPad. Spouštím ji z terminálu příkazem “python WikidPad.py” z adresáře, kde je aplikace nainstalovaná. Když jsem ale chtěl vytvořit spouštěč (přidáním souboru do adresáře /usr/shared/applications), zaseknul jsem se na syntaxi v řádku “Exec=”. Vyzkoušel jsem Exec=python WikidPad.py /home/roman/progs, Exec=python /home/roman/progs/WikidPad.py, ale i když mi launcher po odkliknutí nevypíše žádnou chybu, WikidPad se nespustí.

Pro úplnost uvádím celý text uvedený v launcheru:
[Desktop Entry]
Name=WikidPad
Comment=WikidPad
Exec=python WikidPad.py /home/roman/progs/
Icon=
Terminal=0
Type=Application
Encoding=UTF-8
Categories=Network;Application;

Předem díky za jakoukoliv radu, jak to přinutit k práci.

  1. nemam tuseni jak si aplikaci instaloval, ale pokud ji spoustis takto zkusil bych argument Exec dat do uvozovek
  2. poustet to pres interpreter je podle me zbytecne. Pokud aplikaci nastavis prava sustitelnosti, jeji interpret se automaticky bere z prvni radky v kodu.

chmod +x WikidPad.py

(na zacatku souboru WikidPad bude neco jako #!/usr/bin/python)

Instaloval jsem rozbalením zipu do adresáře, měl jsem to formulovat jinak. Uvozovky jsem zkoušel, ale bohužel bez výsledku. WikidPad.py má následující obsah:


import WikidPadStarter

if __name__ == "__main__":
    WikidPadStarter.main()

WikidPadStarter.py pak vypadá takhle:

#!/bin/python

import sys, os, traceback, os.path, glob, shutil, imp, warnings, ConfigParser
os.stat_float_times(True)

if not hasattr(sys, 'frozen'):
    sys.path.insert(0, "lib")
#     sys.path.append("lib")

…a pokračuje dál.

Mě není úplně jasné, co na téhle věci může nefungovat, když z terminálu běží bez problému.

Hm… nevim tedy jak WikidPad ma nebo nema fungovat. Jde o to, ze kdyz to poustis pres “Desktop entry”, pak se WikidPad.py musi nachazet v ceste, ktera se prohledava (echo $PATH) nebo k nemu musis napsat celou cestu kam si nainstalovat (to pises ze si zkousel). Ovsem otazka je, zda je wikidpad pak schopen najit sve ostatni moduly. Tady je plna specifikace desktop entry
http://standards.freedesktop.org/desktop-entry-spec/latest/ a zlaste pak Exec http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s06.html

Zkousel si ten chmod, tedy udelat wikidpad executable - mel by pak jit pustit bez specifikace interpreteru pouze prikazem WikidPad.py.

Chmod jsem zkoušel, nastavil jsem tomu souboru pro jistotu 777, ale nefunguje to. On ten WikidPad.py nemá ten klasický první řádek, je to jenom jakýsi odkaz na WikidPadStarter (které jsou pak dva .py a .pyc). Já se do toho trochu víc ponořím, tohle bude spíš o Pythonu.

Díky moc za ty odkazy. To jsem přesně potřeboval a nemohl najít.

Problém bude, že python hledá modul WikidPadStarter (viz první řádek) ve svých std. cestách. Lepší a správnější řešení je nahrát ten modul (a případně další) tam kde si je python najde. Lehčí a méně správně řešení pak je pythonu cestu k WikiPadStarter při startu vnutit. Nevím, jak si s tím konfigurák poradí, ale řádek s Exec by mohl vypadat nějak takto (netestoval jsem):


Exec="PYTHONPATH='/cesta/k/wikipad' python WikiPad.py /home/roman/progs/"

Mno a jak zjistit, kde python hledá moduly:


python -c 'import sys; print sys.path'

stderr: Tak ani umístit mezi moduly, ani vnutit cestu nefunguje. Někde dělám chybu. Začíná to být osobní :slight_smile:

Projdu si ty odkazy od Covexe a podívám se na Python (stejně to mám v plánu). Jestli na něco přijdu, tak se podělím. Díky za rady.

Pridej do toho spoustece klidne cestu k python interpreteru… pak uz to s tim chmod musi jit.