Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

module import: NameError: name is not defined

How do I define the function in the importer so that it is visible inside imported? I tried this

importer.py is

def build():
    print "building"

build()

import imported

Whereby, imported.py is simply

build()

Yet, this fails

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

Update After I have got the response to make the circular import, so that import and imported depend on each other, I feel that I need to make clear that this is not always good. My purpose is to specify some common strategy in the imported module. It will use some user-defined functions, e.g. build. User defines the necessary function(s) and calls the strategy. The point is that the shared strategy must not depend on specific user definitions. I believe that in place of import, I need something like evaluate(imported.py), which I believe is a basic function in any script language, including Python. irc://freenode/python insists that I must use import but I do not understand how.

like image 946
Val Avatar asked Nov 15 '25 16:11

Val


1 Answers

importer.py

def build():
   print("building")

build() #this extra call will print "building" once more.

imported.py

from importer import build
build()

Note that both importer.py and imported.py must be in same directory. I hope this solve your problem

like image 131
SujitS Avatar answered Nov 18 '25 05:11

SujitS



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!