web-dev-qa-db-fra.com

Autostart _ Python script dans Terminal Lubuntu

J'utilise Lubuntu avec l'ODROID C0. Il y a un script Python qui doit être démarré automatiquement. J'ai navigué vers

[menu de démarrage]> préférences> Applications par défaut pour LXSession

, puis naviguez jusqu'à l'onglet de démarrage automatique et ajoutez xterm -e "python /path/to/script.py". Le démarrage automatique xterm fonctionne mais lit l'erreur

xterm: Can't execvp "python: Aucun fichier ou répertoire de ce type

Des idées sur la façon de configurer correctement le démarrage automatique de ce script Python?

Merci.

1
www139

Utilisez xterm -e python /path/to/script.py, sans les guillemets.

Vos citations " ne se comportent pas comme vous le souhaitez. xterm -e tente d'exécuter "python avec /path/to/script.py" comme argument, au lieu de python avec /path/to/script comme argument. Dans ce cas, vous pouvez simplement omettre les guillemets.

Dans un script Shell ou lorsque vous exécutez un shell de manière interactive, les guillemets sont traités spécialement et suppression des guillemets est effectuée. Mais cela ne se produit pas avec les commandes spécifiées dans Configuration de LXSession Démarrage automatique Applications à démarrage manuel manuelles .

Heureusement, même si xterm -e dans Ubuntu exécute division de Word sur un argument pour le traiter en tant que commande, il accepte également plusieurs arguments. C'est pourquoi -e doit être la dernière option - tout le reste est interprété comme faisant partie de la commande. Par exemple, si vous exécutez xterm -e nano foo, cela ouvre foo dans nano dans une fenêtre XTerm. Comme man xterm dit:

    - e  programme  [ arguments  ... ]  
 Cette option spécifie le programme (et ses arguments de ligne de commande 
) À exécuter dans la fenêtre  xterm . Il définit également le titre de la fenêtre 
 Et le nom de l’icône comme nom de base du programme 
 En cours d’exécution si ni  - T  ni  - n  sont donnés sur la ligne de commande 
.  Ce doit être la dernière option de la ligne de commande. 

En supposant que vous n'essayiez pas d'exécuter un script dont le nom contient des espaces, tout ce que vous avez à faire est de supprimer les guillemets:

xterm -e python /path/to/script.py

Deux autres mises en garde me viennent à l’esprit:

  • Une fois le script terminé, python se ferme, puis la fenêtre XTerm se ferme également. Si vous ne le souhaitez pas, vous pouvez ajouter du code au script Python qui attend l'interaction de l'utilisateur, ou vous pouvez écrire un script shell wrapper (ou tout type de script wrapper) qui exécute python /path/to/script.py puis attend pour l'interaction de l'utilisateur.
  • XTerm fonctionne bien dans Lubuntu mais l'émulateur de terminal d'interface graphique par défaut est LXTerminal . Si vous préférez utiliser cela, vous pouvez utiliser lxterminal au lieu de xterm. La commande lxterminal accepte -e et la traite de la même manière que xterm, ainsi cela ressemblerait à lxterminal -e python /path/to/script/py. Comme avec XTerm, LXTerminal se ferme une fois l'exécution de la commande terminée.
1
Eliah Kagan