[Python-Dev] Re: [Distutils] Questions about distutils strategy
Gordon McMillan
gmcm@hypernet.com
Thu, 9 Dec 1999 13:23:14 -0500
James C. Ahlstrom wrote:
> Jean-Claude Wippler wrote:
>
> > Ouch - what's wrong with zip archives?
> In general Zip archives store whole branches of a file
> system.
> The archive format stores modules as dotted names, just as they
> appear in the import statement. The search path is "." in every
> archive file by definition. The import statement "import foo"
> just results in a dictionary lookup for key "foo", not a search
> through a zip directory along a local search path for
> "foo.something" where "something" can be pyc, pyo, py, etc.
>
> The intent was to link the archives to the import statement, not
> re-create a directory tree. It borrowed this feature from the
> archive formats of Greg and Gordon.
As I've stated before, I have 2 archive formats. This may seem
a needless complication, but my suspicion is that sooner or
later, people will want 2 different kinds.
One is a .pyz format, which corresponds closely to Jim's .pyl
format (with a number of minor differences: it's compressed,
the archive as a whole has the Python magic number, instead
of each entry, and it's not designed for concatenation).
The other is like a zip, and probably should be zip format. It's
designed to hold _anything_, and can be manipulated from C
and from Python. It can be concatenated and / or embedded
(and the innner one opened without extraction). It's table of
contents is more file-system like. Importing from one is
slower, but that's not really what it's for. It's for packaging up
arbitrary resources. Like .pyz's, or Tcl/Tk for Tkinter apps, or
configuration files.
Jim is correct that a good importer (which can say "No, it's not
mine" as quickly as possible) is better satisfied by a simple
dictionary lookup than fooling with file extensions and
directories (virtual or real).
> > If you want a marshalled TOC, then why not add a manifest entry
> > for it, sort of like what ranlib does with ar?
>
> Sorry, I don't understand. Please explain.
The table of contents is just another entry.
> An important feature is the ability to concatenate to a binary:
> cat python.exe zip1.zip > myapp.exe
> Searching for this isn't fast unless magic numbers are at the
> end. Are zip files recognizable from the end (I don't know)?
Where do you think we got this idea?
> Are there any zip experts out there? Can zip files satisfy all
> the design requirements I listed in pylib.html? Is there zip
> code available? All my code is in Python.
Hmm. My bookmark appears to be dead (I was there not long
ago):
http://www.cubic.org/source/archive/fileform/packers/appnote.t
xt
There have been several references on this list to Guido et al
having some Python / zip code.
- Gordon