Happy New Year :-) [new imputil.py] I tried the new module with the following code: import imputil,sys if sys.argv[1] != 'standard': print 'Installing imputil...', imputil.ImportManager().install() sys.path.insert(0, imputil.BuiltinImporter()) print 'done.' else: print 'Using builtin importer.' print print 'Importing standard stuff...', import string,re,os,sys print 'done.' print 'Importing mx Extensions...', from mx import DateTime,TextTools,ODBC,HTMLTools,UID,URL print 'done.' ### The new importer does load everything in the test set (top level modules, packages, extensions within packages) without problems on Linux. Some comments: · Why is the sys.path.insert(0,imputil.BuiltinImporter()) needed in order to get b/w compatibility ? · Why is there no __path__ aware code in imputil.py (this is definitely needed in order to make it a drop-in replacement) ? · Performance is still 50% of the Python builtin importer -- a bummer if you ask me. More aggressive caching is definitely needed, perhaps even some recoding of methods in C. · The old chaining code should be moved into a subclass of its own. · The code should not import strop directly as this module will probably go away RSN. Use string methods instead. · The design of the ImportManager has some minor flaws: the FS importer should be settable via class attributes, deinstallation should be possible, a query mechanism to find the importer used by a certain import would also be nice to be able to verify correct setup. · py/pyc/pyo file piping hooks would be nice to allow imports of signed (and trusted) code and/or encrypted code (a mixin class for these filters would do the trick). · Wish list: a distutils importer hooked to a list of standard package repositories, a module to file location mapper to speed up file system based imports, -- Marc-Andre Lemburg ______________________________________________________________________ Y2000: Happy New Century ! Business: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/