2010-03-16 3 views
0

J'ai un module "B", je veux l'exécuter à partir d'un script "C", et je veux appeler les variables globales dans "B", car ils étaient dans la racine "C". Un autre problème est si j'importé sys dans « B » quand je lance « C », il ne voit pas sysComment lancez-vous des scripts python à partir d'un autre script et avez leur racine dans ma racine?

# NameError: global name 'sys' is not defined #

Que dois-je faire?

+1

semble tout à fait aki. Peut-être que si vous nous donnez un exemple réel, nous aurons des idées sur la façon de le faire correctement? –

+1

En général, vous ne voulez pas faire cela. Les modules sont parfaits pour conserver les objets dans un espace de nom distinct de votre programme principal. –

Répondre

5

Lorsque vous importez un module B (comme import B), chaque ligne de B sera interprétée. Je suppose que c'est ce que vous voulez dire quand vous dites que vous voulez l'exécuter. Pour référencer des membres dans l'espace de noms B, vous pouvez les obtenir comme suit:

B.something_defined_in_B.

Si vous souhaitez utiliser sys explicitement dans C, vous devrez également l'importer dans C.

1

est-ce dans votre PYTHON_PATH?

sinon, dans le script C de initialisation .py

import os, sys 
sys.path.append('/PATH/TO/MODULE/B') 

puis, dans le module C

from B import * 
something_defined_in_B() 
Questions connexes