Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lancer un script python via un script python

problèmes avec os.system()

Sujet résolu
    19 novembre 2010 à 14:50:11

    Bonjour,

    J'ai un petit (en espérant qu'il ne soit pas gros) problème avec la fonction os.system(), je vous explique :
    J'ai un premier fichier first.py qui effectue différentes opérations selon les choix de d'un utilisateur (les interactions se font en consoles).
    Au lieu d'interroger un utilisateur, on peut directement charger un fichier de parametres au lancement via la commande < python first.py -i monFichier.par >

    J'ai créer une interface via PyQT4 qui permet de créer ce fichier de parametres et de lance le script first.py via la fonction
    os.system("first.py -i " + monfichier)
    

    Or lorsque j'effectue cette opération, il me dit que les modules que j'importe dans le fichier first.py n'existe pas.

    Exemple :
    File "First.py" line 14 in <module>
    from numpy import zeros, arange, ones, where, cos, sin, pi 
    Import Error : No module named numpy

    Or lorsque je lance la commande en console < python first.py -i monFichier.par > tous se passe correctement.

    J'ai consulter moult docs et forum et je reste toujours bloqué sur ce foutu problème..
    j'ai testé la fonction execlp() mais elle me renvoie un problème également.
    Si quelqu'un pouvait m'aider ou juste me dire LA fonction qu'il faut que j'utilise, je lui en serait extrêmement reconnaissant..

    Merci d'avance.

    Seishi.
    • Partager sur Facebook
    • Partager sur Twitter
      19 novembre 2010 à 19:12:41

      Essaye avec :
      os.system("python first.py -i " + monfichier)
      

      Ou encore :
      os.system("./first.py -i " + monfichier)
      

      (J'ai déjà eu des problèmes à cause que j'avais pas mis le "./" ;) )

      Tu peux aussi vérifier que ton fichier "first.py" soit bien exécutable.
      • Partager sur Facebook
      • Partager sur Twitter
        19 novembre 2010 à 19:21:35

        Citation : Darel

        os.system("python first.py -i " + monfichier)
        




        Ça c'est à utiliser comme on veut, mais quand on rajoute le ./ devant, il doit obligatoirement être exécutable.
        Un chmod +x path/file et c'est bon :)

        • Partager sur Facebook
        • Partager sur Twitter
          19 novembre 2010 à 21:03:18

          Citation : Maxibolt

          execfile sinon ?



          +1, c'est quand même plus simple et plus propre.
          • Partager sur Facebook
          • Partager sur Twitter
          Zeste de Savoir, le site qui en a dans le citron !
            20 novembre 2010 à 13:11:43

            Bonjour,
            Effectivement execfile devrait te sortir de ton soucis.
            Sinon je pense que le problème vient du fait que lors d'un appel à os.system il y a modification de l'env d'execution et surtout du path.
            • Partager sur Facebook
            • Partager sur Twitter
              23 novembre 2010 à 11:45:36

              Merci infiniment pour vos réponses.
              Cependant lorsque j'essaye avec vos méthodes, j'obtiens une erreur du type :

              QCoreApplication::exec: The event loop is already running


              Je ne pourrais réessayer qu'a partir de demain, je vous tiendrais au courant de l'évolution du problème.

              Merci encore.

              Seishi
              • Partager sur Facebook
              • Partager sur Twitter
                24 novembre 2010 à 13:52:57

                Citation : Darel


                Essaye avec :

                os.system("python first.py -i " + monfichier)
                




                Merci beaucoup ceci à résolu mon problème ! Allez comprendre pourquoi o_O
                Par contre comme je l'expliquai, les fonctions exec(), execFile(), etc. me lance une erreur du type :
                QCoreApplication::exec: The event loop is already running

                D'après mes lectures ce serait un problème de "Thread" mais j'ai préféré ne pas m'aventurer là dedans, mes connaissances en thread et python étant bien trop sommaires :-°
                Merci encore une fois pour vos réponses qui m'ont fortement aidés ! :D
                • Partager sur Facebook
                • Partager sur Twitter

                Lancer un script python via un script python

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown