2.3a1: importhooks oddity

Just just at xs4all.nl
Thu Jan 2 12:47:47 EST 2003


In article <ySNQ9.8812$9N5.914447 at newsread2.prod.itd.earthlink.net>,
 Hans Nowak <wurmy at earthlink.net> wrote:

> Howdy y'all,
> 
> I downloaded both the Windows installer and the source code for Python 2.3a1. 
> While playing with the new import hooks, I noticed something peculiar. 
> Consider 
> this piece of code:
> 
> import sys
> 
> print sys.version
> 
> def f(path):
>      print "Wahey!", path
>      raise ImportError
> 
> sys.path_hooks.append(f)
> 
> import nothing  # needless to say, doesn't exist
> 
> I built my own version with Cygwin, using a simple configure & make install, 
> nothing fancy. When I run the code, I get the following output:
> 
> $ python test-importhooks-2.py
> 2.3a1 (#1, Jan  1 2003, 21:44:23)
> [GCC 2.95.3-5 (cygwin special)]
> Wahey!
> Traceback (most recent call last):
>    File "test-importhooks-2.py", line 13, in ?
>      import nothing  # needless to say, doesn't exist
> ImportError: No module named nothing
> 
> This is what I expected. However, when I run this with the Windows version, I 
> get this output:
> 
> (P:\test\2.3) $ python test-importhooks-2.py
> 2.3a1 (#38, Dec 31 2002, 17:53:59) [MSC v.1200 32 bit (Intel)]
> Traceback (most recent call last):
>    File "test-importhooks-2.py", line 13, in ?
>      import nothing  # needless to say, doesn't exist
> ImportError: No module named nothing
> 
> In other words, function f doesn't seem to be called.
> 
> Is this a bug, a feature, or am I doing something wrong?

You may have to do sys.path_importer_cache.clear() to make sure no 
handler is registered for the path (this is most likely a None value, 
signalling it should use the builtin mechanism). Check PEP 302 for the 
details. You should then get a "Wahey!" for each member of sys.path (and 
as a bonus no file system import will work after you installed your hook 
;-)

Just




More information about the Python-list mailing list