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.
nemam tuseni jak si aplikaci instaloval, ale pokud ji spoustis takto zkusil bych argument Exec dat do uvozovek
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.
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):