Page 1 sur 3

lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 13:17
par Muj
Bonjour,
Je manipule un servomoteur à partir d'une webserv et un script python. Le script python se trouve sous /home/pi.
Actuellement je lance le script python par la commande LX Terminal :
sudo python3 porte.py

J'aimerais lancer le script au démarrage du raspberrypi.
Je suis aller voir plusieurs tutos ou forum avant de vous écrire.
J' ai essayé par "sudo nano /etc/profile" en écrivant la commande " sudo python3 /home/pi/porte.py" à la fin.

J' ai essayé par "sudo nano /etc/rc.local" en écrivant la commande " sudo python3 /home/pi/porte.py" avant #Print the IP address.

Puis en le rendant executable par la commande "chmod" puis j' ai écrit "sudo nano /etc/rc.local" en écrivant la commande " sudo python3 /home/pi/porte.py" avant exit 0.

Ca ne fonctionne toujours pas.
Merci pour votre aide

Re: lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 13:53
par gege05
Bonjour,

En mettant dans crontab @reboot sudo /home/pi/porte.py
avec au début de ton script
#!/usr/bin/python3
# -*- coding: utf-8 -*-

Re: lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 15:27
par Muj
Merci pour la réponse rapide.
Pour les commandes en début de script, c'est ok.

Par accéder à crontab, je tape "sudo nano /etc/crontab" et je mets "@reboot sudo /home/pi/porte.py" en dernière ligne.
si c'est oui, ça ne fonctionne toujours pas

Re: lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 15:48
par dyox
Bonjour,

Pour être sûr, les chemins des commandes du script sont-ils absolus ?

Question que je me pose : Puisque vous écrivez dans le crontab de sudo, est-il encore utile de lancer porte.py avec sudo ?

Re: lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 15:54
par gege05
Bonjour

Pour modifier le crontab c'est plus sûr d'utiliser

"crontab -e" et pour voir sans modification "crontab -l"

Re: lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 16:32
par Muj
encore merci pour les réponses.
juste une petite question :
Dans /home/pi, quand je double clique sur ouvrir porte.py, il y a une fenêtre qui s'ouvre avec plusieurs possibilités.
Lorsque je fais "éxécuter" , il ne se passe rien, ou alors je fais "lancer dans terminal" , la fenêtre LX Terminal s'ouvre et se referme aussitôt.
Est ce que le problème ne viendrait pas de là?

Re: lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 17:05
par domi
Bonjour,

"sudo nano /etc/crontab" est effectivement très risqué, il faut mieux utiliser "sudo crontab -e"
Sudo permet de configurer la crontab de root, donc pas besoin de "sudo" dans le script.
Il faut par contre donner le chemin au complet

Re: lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 17:33
par gege05
Bonjour,

Avant de mettre l'exécution de ton script dans un crontab, teste le en ligne de commande, tu auras alors des informations qui te seront utiles.
Si le script "porte.py" attend des réponses, pour l'exécuter en ligne de commande utilise la commande "yes" .

Re: lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 17:43
par Muj
Bonsoir à tous,
juste pour vous donner des nouvelles,
j'ai enlevé la commande "@reboot /home/pi/porte.py" de "sudo nano /etc/crontab".

Je l'ai mis dans "sudo contrab -e". D'ailleurs, il n y a que cette ligne de commande.

Autre chose, dans LXterminal, lorsque je tape "sudo /home/pi/porte.py" le script se lance bien. Donc je ne pense pas que ça vienne du chemin.

Par contre comme je le disais plus tôt, lorsque je double-clique sur le script "porte.py" une fenêtre s' ouvre avec plusieurs choix.
Lorsque je fais "éxécuter" , il ne se passe rien, ou alors je fais "lancer dans terminal" , la fenêtre LX Terminal s'ouvre et se referme aussitôt.
Le probleme ne viendrait pas de là??
Pour le rendre le script "exécutable", j'ai tapé la commande "chmod +x porte.py"

En tout cas merci pour toute l'aide que vous m' apportez!

Re: lancer un sript python au demarrage

Posté : mar. 25 avr. 2017 19:48
par domi
lorsque tu fais "sudo /home/pi/porte.py" le script se lance bien, mais il affiche quoi ?
Lorsque tu le lances tu es dans un terminal.
Lorsque tu double-clique dessus, il n'y a pas de terminal.
Lorsque Cron le lance, il n'y a pas non plus de terminal.
c'est donc trois environnements totalement différent.

Le script doit pouvoir s'exécuter dans l'environnement auquel tu le lance.
La question est donc, lorsque tu le lance par "sudo /home/pi/porte.py", est-ce que quelque chose s'affiche ?
Que fait ce script python ?