module d'importation: NameError: name n'est pas défini

Comment puis-je définir la fonction de l'importateur, de sorte qu'il est visible à l'intérieur importés? J'ai essayé ce

importer.py est

def build():
    print "building"

build()

import imported

En vertu de laquelle, imported.py est tout simplement

build()

Encore, il échoue

building
Traceback (most recent call last):
  File "C:\Users\valentin\Desktop\projects\maxim\miniGP\b01\evaluator\importer.py", line 6, in <module>
    import imported
  File "C:\Users\valentin\Desktop\projects\maxim\miniGP\b01\evaluator\imported.py", line 1, in <module>
    build()
NameError: name 'build' is not defined

Mise à jour Après j'ai eu la réponse à apporter à la circulaire de l'importation, de sorte que l'importation et importés dépendent les uns des autres, je sens que j'ai besoin de préciser qu'il n'est pas toujours bon. Mon but est de préciser certaines stratégie commune dans le module importé. Il va utiliser certaines fonctions définies par l'utilisateur, par exemple build. L'utilisateur définit la fonction nécessaire(s) et appelle la stratégie. Le point est que la stratégie partagée ne doit pas dépendre d'utilisateur spécifique définitions. Je crois qu'à la place de import, j'ai besoin de quelque chose comme evaluate(imported.py), je crois que c'est une fonction de base dans tous les langages de script, y compris Python. irc://freenode/python insiste sur le fait que je dois utiliser import mais je ne comprends pas comment.

  • Une partie de notre confusion est parce que c'est exactement ce que import n', comme un effet secondaire de l'importation du module lui-même. (Donc, si foo.py contient bar = 1 + 1 et vous import foo, vous avez alors accès à foo.bar == 2 parce que foo.py a été évaluée!)
  • Je ne comprends pas où la confusion dont vous parlez.
InformationsquelleAutor Val | 2013-10-31