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

Python Discussion :

une fois compilé, os.system ne fonctionne pas alors qu'en .py il marche


Sujet :

Python

  1. #1
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 392
    Points : 863
    Points
    863
    Par défaut une fois compilé, os.system ne fonctionne pas alors qu'en .py il marche
    bonjour,

    je suis face à un problème étrange.
    j'ai une ligne de commande à lancer dans mon programme python :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return lambda fn: os.system("cd c:\\ireport\\bin\\ && ireport.exe " + fn)
    quand je lance mon programme python en script ça fonctionne bien :
    mais quand je lance le programme compilé, la ligne ne fonctionne pas et je vois rapidement un message d'erreur "programme non trouvé.."

    avez-vous une idée du pourquoi ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut

    Qu'entendez vous par "compilé"?
    La ligne que vous montrez commence par "#".
    S'agit-il du seul contenu du script?
    Désolé pour ces questions.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 392
    Points : 863
    Points
    863
    Par défaut
    j'entends par "compilé", la production d'un exe avec py2exe.

    oups, j'ai enlevé le commentaire, mais c'était juste ici donc hélas le probleme ne vient pas de là.

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Essaie de remplacer os.system par subprocess.Popen.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    from subprocess import Popen 
    ...
    return Popen("cd c:\\ireport\\bin\\ && ireport.exe " + fn, shell=True)
    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 392
    Points : 863
    Points
    863
    Par défaut
    bonjour,

    merci de ta proposition, je l'essaierai lundi.

    quelle différence fondamentale il y a entre subprocess et os.system ?

    Pour infos, je compile en p2.5, je peux pas upgrader le reste à cause d'autre librairy qui n'existe pas en 2.7

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Le module subprocess est arrivé avec Python 2.4, donc, ok pour le 2.5. La doc pour le Python 2.5 est ici: http://docs.python.org/release/2.5/.

    A la réflexion, Popen ne doit pas renvoyer la même chose qu'os.system, et il faut probablement adapter le code (je pense au 'return'): dans la doc du module subprocess, il y a une liste des remplacements recommandés avec des exemples de code (http://docs.python.org/release/2.5/lib/node537.html).

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Ici aussi beaucoup d'exemples concrets :

    http://www.doughellmann.com/PyMOTW/subprocess/

    mais de toutes façons il faudra faire quelques essais avec ".communicate" et ".poll"
    selon le type de retour que tu désire récupérer.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Ceci est un clone d'une fonction - get_status_output - de la bibliothèque command subit le même sort que os.system... que j'avais déjà posté il y a quelque temps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from subprocess import *
    def get_status_output(cmd, input=None, cwd=None, env=None):
        pipe =  Popen(
                 cmd, shell=True, cwd=cwd, env=env, stdout=PIPE, stderr=STDOUT
               )
        output, errors = pipe.communicate(input=input)
        assert not errors
        return pipe.returncode, output
     
    if __name__ == '__main__':
        status, output = get_status_output("python foo.py")
        print output
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/11/2010, 17h15
  2. Comportement différent une fois compilé
    Par Le Furet dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 19/01/2007, 19h12
  3. Réponses: 8
    Dernier message: 15/09/2006, 19h37
  4. [ODBC] une requete d'insertion qui ne fonctionne pas
    Par boulhous dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/05/2006, 13h56
  5. Réponses: 13
    Dernier message: 31/08/2005, 14h03

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