Basic 'import' problem

Frantisek Fuka fuka at fuxoft.cz
Sat Feb 7 13:23:37 EST 2004


This thing keeps bugging me. It's probably some basic misunderstanding 
on my part but I am stumped. Let's say I have two Python files: file.py 
and file2.py. Their contents is as follows:

file.py:
---------------------
import file2
def hello():
	print "Hello"
file2.hello2()

file2.py:
---------------------
import file
def hello2():
	print "Hello2"
file.hello()

Now, when I run "file.py", I get the following error:

Traceback (most recent call last):
   File "file.py", line 1, in ?
     import file2
   File "/cygdrive/t/python/file2.py", line 1, in ?
     import file
   File "T:\python\file.py", line 4, in ?
     file2.hello2()
AttributeError: 'module' object has no attribute 'hello2'

I think I grasp why I got this error (file2.hello2() is referenced 
before its definition was "compiled" by Python) but I am puzzled as to 
how to do this properly. Isn't it fairly common for two source files to 
reference each other in this way? I know I can solve this by putting the 
import statement after the def statement, but I have the similar problem 
in much larger project, with many files and many includes and I'd like 
to keep all my includes at the beginning of the file.

-- 
                                          Frantisek Fuka
(yes, that IS my real name)
(and it's pronounced "Fran-tjee-shek Foo-kah")
----------------------------------------------------
My E-mail:   fuka at fuxoft.cz
My Homepage: http://www.fuxoft.cz
My ICQ:      2745855



More information about the Python-list mailing list