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 :

Problème contexte execfile


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Par défaut Problème contexte execfile
    Bonjour,
    Je travailles sur un deux modules distincts que j'essaye maintenant de les rejoindre. Mais je rencontre un petit problème avec execfile.

    Pour information dans avant de les rejoindre j'utilisais execfile de cette manière:
    execfile("monficher.py",globals(),locals())
    Des variables étaient créent dans ce script et donc présente après donc globals().

    Mais en mettant un execfile dans un script python dans une simple fonction def, que j’appelle depuis mon interface graphique (donc une classe). Alors là il ne trouve plus les variables créées dans le script appelé par execfile, j'ai vérifié en affichant globals et en effet je remarque leur absence.

    Pour être sûr que vous comprenez par exemple:

    Test.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import script
     
    script.fonction()
    script.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def fonction():
           execfile('subscript',globals(),locals())
           print toto
    subscript.py
    et j'obtiens donc à l’exécution de fonctionClass() un ErrorName global name 'toto' is not defined.

    Je pense que c'est un problème de contexte, mais je reste bloqué.

    Merci d'avance de votre aide.

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    Il serait bien de mettre un exemple minimal fonctionnel de ce que tu veux faire.

    De prime abord, je dirai que python n'est pas invoqué dans la commande execfile et le fichier subscript ne comporte pas de shebang.

    Deuxièmement le fichier exécuté ainsi échappe au contrôle de ton code principal, je doute que le code 'subscript' modifie les références de celui-ci.

    Pour l'erreur, il faut montrer le traceback complet. Là, on ne sait pas où est levée l'erreur.

    Et aussi, pourquoi utiliser execfile pour exécuter du python à partir de python ?

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Il est nécessaire de remonter 'toto' dans les namespaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    global toto
    toto = "ok"
    Sinon toto reste une locale.

    @+

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Et re,

    Citation Envoyé par VinsS Voir le message
    Et aussi, pourquoi utiliser execfile pour exécuter du python à partir de python ?
    +1
    C'est la porte ouverte à toutes les fenêtres alors qu'import fait très bien son travail.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #script.py
    from subscript import *
    def fonction():
        print toto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #subscript.py
    toto = "ok"
    @+

Discussions similaires

  1. [WD17] Problème contexte thread
    Par zouzoukha dans le forum WinDev
    Réponses: 18
    Dernier message: 05/01/2013, 14h43
  2. Problème avec EXECFILE
    Par jouclar dans le forum Général Python
    Réponses: 4
    Dernier message: 04/05/2011, 21h11
  3. Problème context.xml Struts 2
    Par safari25 dans le forum Struts 2
    Réponses: 2
    Dernier message: 03/01/2011, 15h23
  4. problème context servlet
    Par benZ31 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 29/05/2009, 14h00
  5. Autre contexte mais tjs problème d'appel fct interne
    Par Neilos dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/08/2004, 13h51

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