Nombreux sont mes projets où, pour fonctionner, il fallait lancer un script Python. Par exemple pour une station de contrôle, un Jukebox avec puce RFID, ou encore un système d’alarme de sécurité.

Le problème est qu’il est assez embêtant de devoir le lancer à la main à chaque démarrage du Raspberry Pi… Car cela implique d’avoir toujours un clavier, une souris et un écran de branché, ou de se connecter en SSH pour le lancer.

La solution est de démarrer le script Python dès que le Raspberry Pi démarre, et nous allons voir comment faire dans cet article.

1. Créer un script shell à exécuter

Dans mon dossier d’utilisateur, je vais créer un fichier shell qui contiendra les commandes à exécuter pour lancer le script Python.

cd /home/pi
nano lancement.sh

La première ligne “cd /home/pi” permet de se déplacer dans votre répertoire utilisateur.

La commande “nano lancement.sh” va créer le fichier “lancement.sh” et ouvrira l’éditeur de texte nano pour que l’on puisse écrire dans le fichier.

Dans le fichier, écrire les commandes pour exécuter votre script Python :

cd /home/pi/mon-programme
python3 mon-programme.py

Sauvegardez avec le raccourci Control + X, confirmez en appuyant sur “O” et validez en appuyant sur Entrée.

2. Rendre le fichier exécutable

Avant de pouvoir utiliser ce fichier shell, il faut le rendre exécutable :

chmod 755 lancement.sh

Testez votre fichier et vérifiez que votre script python se lance avec la commande :

sh lancement.sh

Si tout fonctionne, vous pouvez passer à l’étape suivante.

3. Créer un fichier de logs

Dans votre répertoire utilisateur, créez un dossier “logs” qui contiendra les différents fichiers logs de vos programmes. Ils serviront à avoir une trace écrite en cas d’erreur de votre programme.

mkdir /home/pi/logs

4. Ajouter dans le crontab

crontab est un processus qui permet d’exécuter des scripts en tâche de fond. Il va exécuter des scripts et commandes à des heures précises ou lors d’évènements précis.

Pour ajouter une nouvelle commande dans crontab :

sudo crontab -e

En bas du fichier, ajoutez la ligne :

@reboot sh /home/pi/lancement.sh > /home/pi/logs/log.txt 2>&1

Cette ligne va permettre d’effectuer la commande “sh /home/pi/lancement.sh” lors du démarrage du Raspberry Pi, et enregistrera les messages d’erreur et logs dans le fichier “/home/pi/logs/log.txt”.

Sauvegardez avec le raccourci Control + X.

5. Vérifiez que tout fonctionne

Redémarrez votre Raspberry Pi

reboot

Si votre programme ne s’est pas lancé ou qu’il y a un problème, regardez alors dans le fichier de logs les erreurs qui sont survenues.

J’espère que ça a pu vous aider ! Ecrivez-moi en commentaire à quoi va vous servir ce script 🙂

100%
100%
Cet article vous a été utile ?
  • Note des lecteurs (19 Votes)
    7.1
Partager

A propos de l'auteur

10 commentaires

  1. Bonjour,

    Merci pour ce petit tuto qui m’a facilité la vie.
    Pas de rc.local, de init.d, etc….

    J’avais juste besoin de lancer 2 scripts qui lançaient 2 executables java pour récuperer les valeurs de deux centrales d’acquisitions.

    En revanche, tout ceci s’éxecute maintenant en arrière plan, il faut que je trouve comment afficher la fenetre…

    Merci!

    • Bonjour,
      malheureusement pour moi, ce tutoriel ne fonctionne pas.
      Lorsque je lance la commande sh lancement.sh, mon programme se lance correctement mais malgré avoir bien suivi les étapes 3 et 4, et plusieurs tentatives mon programme ne se lance pas au démarrage…
      Cela ne vient surement pas de ce tutoriel qui est bien expliqué et bien clair.
      Cela ne fonctionne pas non plus avec :
      rc.local,
      ni avec: /etc/xdg/lxsession/LXDE-pi/autostart et n’oubliant pas de rendre mon programme executable avec sudo chmod 755 /home/pi/mon_programme.py ou sudo chmod 755 /home/pi/mon_programme.py.
      Bref, je galère mais merci pour ce tutoriel.

  2. Merci beaucoup !

    Info pour les suivants : j’ai un peu galéré parce que le script lancement.sh n’a fonctionné que quand j’y ai écrit
    cd /home/pi
    sans la fin que tu as donné

    Personnellement, ce tuto m’as servi pour un TIPE de concours d’école d’ingé !

  3. Gaubertier Jean-Claude le

    bonsoir,
    j’ai suivi le tuto , apparemment le réseau ne démarre pas assez vite j’ai des erreurs
    “OSError: [Errno 101] Network is unreachable” peut être faudrait il temporiser le demarrage?

  4. Merci beaucoup pour ce tuto !

    Pour info, avec un petit sleep 90s en début de script on peut temporiser, dans le cas d’une attende de connexion internet pour lancer le script par exemple.

Laissez-nous un commentaire !