Steve Holden wrote: > This is even stranger: it makes it if I import the module a second time:
[second import seems to succeed] Maybe you are experiencing some version confusion? What you describe looks much like the normal Python 2.3 behaviour (with no import hook involved) whereas you seem to operate on the 2.4 library. A partially initialized module object is left behind in sys.modules and seen by further import attempts. $ cat arbitrary.py import not_there def f(): print "you ain't gonna see that" $ python Python 2.3.3 (#1, Apr 6 2004, 01:47:39) [GCC 3.3.3 (SuSE Linux)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import arbitrary Traceback (most recent call last): File "<stdin>", line 1, in ? File "arbitrary.py", line 2, in ? import not_there ImportError: No module named not_there >>> import arbitrary >>> arbitrary.f() Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'module' object has no attribute 'f' >>> I have no experience with import hooks, but for normal imports that has been fixed in Python 2.4: $ py24 Python 2.4 (#5, Jan 4 2005, 10:14:01) [GCC 3.3.3 (SuSE Linux)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import arbitrary Traceback (most recent call last): File "<stdin>", line 1, in ? File "arbitrary.py", line 2, in ? import not_there ImportError: No module named not_there >>> import arbitrary Traceback (most recent call last): File "<stdin>", line 1, in ? File "arbitrary.py", line 2, in ? import not_there ImportError: No module named not_there >>> Peter -- http://mail.python.org/mailman/listinfo/python-list