ImportModule (was Re: [Python-Dev] for the todo list: cStringIO uses string.joinfields)
Guido van Rossum
guido@python.org
Sat, 13 May 2000 16:39:19 -0400
> Fredrik wrote:
>
> > (btw, the C API reference implies that ImportModule doesn't
> > use import hooks. does that mean that cStringIO doesn't work
> > under e.g. Gordon's installer?)
>
> You have to fool C code that uses ImportModule by doing an
> import first in your Python code. It's the same for freeze. It's
> tiresome tracking this stuff down. For example, to use shelve:
>
> # this is needed because of the use of __import__ in anydbm
> # (modulefinder does not follow __import__)
> import dbhash
> # the next 2 are needed because cPickle won't use our import
> # hook so we need them already in sys.modules when
> # cPickle starts
> import string
> import copy_reg
> # now it will work
> import shelve
Hm, the way I read the code (but I didn't write it!) it calls
PyImport_Import, which is a higher level function that *does* use the
__import__ hook. Maybe this wasn't always the case?
--Guido van Rossum (home page: http://www.python.org/~guido/)