[Python] lanciare programma senza far comparire la shell
Daniele Varrazzo
piro a develer.com
Ven 9 Nov 2012 17:40:23 CET
On 2012-11-09 16:29, Matteo Perini wrote:
>> Se sì, allora il problema è nello script. Il desktop launcher esegue
>> una shell? Ovvero:
>>
>> python -c "print 'prova'" > /tmp/prova1
>
> Questo non viene fatto...
> Ho configurato il lanciatore come nell'allegato.
> Non capisco cosa sbaglio... sembra che il comando "python" non sia
> riconosciuto.
> Se scrivo in un terminale lo stesso commando viene eseguito senza
> problemi e in /tmp trovo il file prova1 con all'interno scritto
> "prova".
Immaginavo potesse non funzionare, per questo chiedevo. Non funziona
perché il lanciatore non esegue una shell (che interpreta ">" ecc.)
Questo è comprensibile.
>> /bin/bash -c "python /il/tuo/script > /tmp/prova1 2>&1"
>>
>> Tutto non testato.
>>
> Questo ultimo comando mi da qualche speranza... viene creato il file
> /tmp/prova1 con scritto questo:
>
> Traceback (most recent call last):
> File "prova.py", line 3079, in <module>
> win = Main()
> File "prova.py", line 49, in __init__
> builder.add_from_file('main.glade')
> glib.GError: Apertura del file "main.glade" non riuscita: File o
> directory non esistente
>
> devo assegnare una working directory???
Solo se non ti va bene / o $HOME o ovunque sia quella di partenza.
> il file main.glade è nella stessa cartella del file prova.py
Guarda, mentre scrivevo il messaggio di sopra avevo in mente "scommetto
che ha scritto un programma che fa assunzioni su quale sia la directory
corrente"...
Se proprio devi, usa os.chdir(os.path.dirname(__file__)) per fare un cd
là. Ma è una pratica sbagliata, stai giocando con una variabile globale.
È meglio rendere il programma indipendente dalla directory, per esempio
usa
builder.add_from_file(os.path.join(os.path.dirname(__file__),
'main.glade'))
sempre, rigorosamente, non testato.
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python