Python eval() et globals()

Je suis en train d'exécuter un certain nombre de fonctions à l'aide de la fonction eval(), et j'ai besoin de créer un certain type d'environnement pour l'exécution. Il est dit dans la documentation que vous pouvez passer globals comme un deuxième paramètre à la fonction eval().

Mais il semble ne pas fonctionner dans mon cas. Voici la simpified exemple (j'ai essayé les deux approches, en déclarant la variable globale et de l'aide globals(), et les deux ne fonctionnent pas):

Fichier script.py:

import test

global test_variable
test_variable = 'test_value'
g = globals()
g['test_variable'] = 'test_value'
eval('test.my_func()', g)

Fichier test.py:

def my_func():
    global test_variable
    print repr(test_variable)

Et j'obtiens:

NameError: nom global de "test_variable" n'est pas défini.

Que dois-je faire pour passer que test_variable en my_func()? En supposant que je ne peux pas passer en tant que paramètre.

OriginalL'auteur Andrey | 2009-04-08