[Python-Dev] Towards a Python based import scheme

James C. Ahlstrom jim@interet.com
Thu, 16 Sep 1999 09:56:00 -0400


Greg Stein wrote:
> 
> Gordon McMillan wrote:
> >...
> >   def _reload_hook(self, module):
> >     # gmcm - Hmmm, reloading of a module may or may not
> > be impossible,
> >     # (depending on the importer),  but at least we can
> >     # look to see if it's ours to reload:
> >     if hasattr(module, '__importer__'):
> >       if getattr(module, '__importer__') == self:
> >         raise SystemError, "reload not yet implemented"
> >     return self.__chain_reload(module)
> 
> I've folded this in (finally).
> 
> New imputil.py to be published in a bit...

As a result of all this import discussion I am a bit worried that
the python library *.pyl file format may not be powerful enough.
I have always thought in terms of unique top-level names and a
format which supports import of modules and packages.  But this
does not support the full functionality of PYTHONPATH.  For example,
PYTHONPATH can (and is) used to select the correct plat-* directory
files.  And the format may not support Jim Fulton's fancy local
import scheme.  And what if someone invents a third thing to import
besides a module or a package?  PYTHONPATH is not going away nor
should it.

How about if the *.pyl file format is exactly a directory structure?
I mean that the table of contents is limited to paths starting with
a directory name only, and that the seperator is '/' instead of '.'.
So a listing would be identical to the output of 'ls -R'.  So:
  Lib/string.pyc
  Lib/exceptions.pyc
  Lib/plat-sunos4/...
  mx/__init__.pyc
  mx/...
  package2/...
  dir3/...
  ...

The implied PYTHONPATH for this file is ["Lib", "."].  Since the
format is exactly a directory tree, it is guaranteed that whatever
PYTHONPATH or imports can do now or in the future with a directory
tree, it can still do it with a *.pyl file.

Jim Ahlstrom