[Import-sig] Requirements

Gordon McMillan gmcm@hypernet.com
Fri, 4 Feb 2000 10:52:20 -0500


Going through the links Greg posted to the dev list discussion, 
I find some things that I think need clarification:

[Guido]
> - the core API may be incompatible, as long as
> compatibility layers can be provided in pure Python

From the C API, we have PyImport_Import which does the 
same as (keyword) import. But PyImport_ImportModule and 
...Ex are lower level. I assume that modulo some arg 
munging, these also will do the same as (keyword) import. 
Decent assumption?

[Guido]
> - support for freeze functionality

Heh, heh. The current modulefinder works by (yet again) 
emulating the entire import process, but not letting the 
"imported" code leak out. In imputil, it's the Importer base 
class that does the "leaking", not code in a (well-behaved) 
derived class. So that opens the possibility of replacing the 
Importer object in the derived class's bases with a 
PhonyImporter that doesn't leak. So modulefinder could use 
the derived class and wouldn't have to emulate. However, 
modulefinder would have to report more information - the 
importer that found the module, as well as the 
file/URL/whatever it found it in.

[Guido]
> - sys.path and sys.modules should still exist; sys.path 
> might have a slightly different meaning

and 

> - Standard import from zip or jar files, in two ways:
>  (1) an entry on sys.path can be a zip/jar file instead of a
>  directory; its contents will be searched for modules or
>   packages
>  (2) a file in a directory that's on sys.path can be a zip/jar
>   file;its contents will be considered as a package

It looks like we're very close to this. Maybe already there 
(once a suffix importer has been written for a zip file).

In the current version, items on sys.path can be directory 
names or importer instances. Obviously at startup, sys.path is 
nothing more that strings. Also (per other discussions), 
sys.path starts as a minimal boot path, and gets expanded 
from Python.

What is this mechanism?

Do we worry about:
 Network installations in heterogeneous environments?
 Ditto in homogeneous environments?
 Multiple incompatible installations?

(I vote "yes" on the last two, and "maybe" on the first; mainly 
because the latter two can be solved by figuring a boot path 
based on the location of the executable).

Should the syntax of .pth files be expanded to allow specifying 
importer instances? Or do we use sitecustomize?

Mmph. Enough for now...

- Gordon