IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Exécuter un script Python sur la Raspberry depuis PHP


Sujet :

Raspberry Pi

  1. #1
    Invité
    Invité(e)
    Par défaut Exécuter un script Python sur la Raspberry depuis PHP
    Bonjour tout le monde,

    J'essaie depuis quelques jours d’exécuter un script python (qui allume un relais) avec PHP via cette commande :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    shell_exec('/usr/bin/python3 ./app/model/script/allumer_eclairage.py');

    le script se lance mais il n'arrive pas à faire les import :

    Traceback (most recent call last): File "./app/model/script/allumer_eclairage.py", line 1, in import serial ImportError: No module named 'serial'
    Le script fonctionne pourtant très bien quand je le lance depuis le terminal.


    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut SabSab43.

    Définissez dans votre raspberry la variable d'environnement PATH contenant le chemin vers vos répertoires contenant vos scripts et votre module serial.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PATH=.:/usr/bin/python3:/app/model/script/:$PATH
    Le point au début signifie le répertoire courant.
    Après le premier : c'est le chemin vers votre répertoire contenant le script et le module serial.

    A mettre dans le fichier ".bashrc" de votre compte "pi" ou "root".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je n'ai pas compris à quoi correspondait le "$PATH", et après avoir défini cette variable comment je m'en sers ?
    Je dois l’appeler dans mon code PHP quand je fais le shell_exec() ?


    merci pour votre réponse et désolé de ne pas avoir répondu plus tôt...

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut SabSab43.

    Citation Envoyé par SabSab43
    Le script fonctionne pourtant très bien quand je le lance depuis le terminal.
    Pourquoi ? Parce que vous lancez votre script depuis le répertoire contenant tout ce dont vous avez besoin.

    L'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No module named 'serial'
    signifie que votre script ne trouve pas le module "serial". Pourquoi ?
    Parce que raspbian ne sait pas où se trouve le module quand vous lancez le script à partir de la commande "shell_exec".

    Comme je l'ai dit, pour résoudre ce problème, vous devez indiquez dans la variable d'environnement, le chemin vers tous les modules que vous utilisez dans votre script.

    Il se peut aussi que vous ne lanciez pas votre script dans le compte "root".
    Placez devant la ligne que vous désirez exécuter un "sudo".

    Citation Envoyé par SabSab43
    Je n'ai pas compris à quoi correspondait le "$PATH"
    Le $PATH correspond à la définition de votre variable d'environnement telle quelle est à l'origine, c'est-à-dire au démarrage de votre raspberry.

    Citation Envoyé par SabSab43
    , et après avoir défini cette variable comment je m'en sers ?
    Ce n'est pas vous qui vous vous en servez mais c'est raspbian qui va l'utiliser. En faisant quoi ?
    En cherchant dasn la liste des répertoires qui sont spécifiés dans la variable d'environnement PATH, tous les modules dont vous faites références dans votre script.

    Citation Envoyé par SabSab43
    Je dois l’appeler dans mon code PHP quand je fais le shell_exec() ?
    La réponse est OUI ou NON. Cela dépend comment vous allez définir cette variable d'environnement.

    Le mieux est de la définir comme je l'ai dit, dans le script ".bashrc".
    Elle sera active au démarrage de la raspberry. Et donc la réponse est NON.

    Ou bien, vous la définissez dans votre script, en précisant le chemin vers les modules, entre autre le module "serial".
    Et du coup, la réponse est OUI.

    Citation Envoyé par SabSab43
    merci pour votre réponse et désolé de ne pas avoir répondu plus tôt...
    Il n'y a aucune obligation à répondre dans l'instant. Prenez votre temps !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. [Python 3.X] Comment exécuter un script Python sur une page web ?
    Par delandam dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 02/07/2016, 15h20
  2. Exécuter un script python sur le serveur
    Par lesanglier dans le forum Général Python
    Réponses: 2
    Dernier message: 19/12/2013, 09h05
  3. Réponses: 3
    Dernier message: 04/01/2013, 20h36
  4. Réponses: 2
    Dernier message: 02/03/2011, 16h45
  5. Exécuter un script python depuis PHP
    Par Fawn_noOb_wxPython dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2008, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo