The imp module and cyclic imports

Matthias Kramm m.kramm at quiss.org
Thu Nov 24 21:33:34 CET 2005


Hi All,

I'm having a little bit of trouble using the "imp" module to
dynamically import modules. It seems that somehow cyclic references of
modules don't work.
I'm unable to get the following to work:

I've got the following files:

web/__init__.py
web/one.py
web/two.py
testimport.py

>From which web/one.py contains the line:

from web import two

and web/two.py contains the line:

from web import one

.

Now I try to import one of the two modules in testimport.py:

import imp
(mfile,pathname,description) = imp.find_module("one", ["web"])
m = imp.load_module("one",mfile,pathname,description)

When I start the file testimport.py, I get the following exception:

$ python testimport.py
Traceback (most recent call last):
  File "testimport.py", line 3, in ?
    m = imp.load_module("one",mfile,pathname,description)
  File "web/one.py", line 1, in ?
    from web import two
  File "/scripts/python/importtest/web/two.py", line 2, in ?
    from web import one
  File "web/one.py", line 1, in ?
    from web import two
ImportError: cannot import name two

It seems that when two.py (referenced by one.py) references one.py
again, something breaks.

I'm lost. Am I doing something wrong, or is this a bug?

Many thanks for any light anybody can shed on this.

Greetings

Matthias




More information about the Python-list mailing list