[Distutils] formencode as .egg in Debian ??
Phillip J. Eby
pje at telecommunity.com
Tue Nov 22 16:35:10 CET 2005
At 01:04 AM 11/22/2005 -0600, Bob Tanner wrote:
>On Tuesday 22 November 2005 12:15 am, Martin v. Löwis wrote:
> > I don't think Debian should use the egg structure. It apparently relies
> > on building a long sys.path (even though through only a single .pth
> > file);
>
>I'm not sure of how .eggs are implemented, but I'm going to cross-post this
>info to the python-distutils mailing list. See below for additional comments.
>
> > this adds additional costs to all import statements on startup.
> > It gets worse if these are zipfiles, because then each import statement
> > will have to look into each zipfile (until the import is resolved).
>
>The is the opposite of what I was told by upstream development over on
>distutils, snippet from Phillip J. Eby <pje at telecommunity.com>:
>
><snip>
>Note also that in many cases, the package will be a single .egg file,
>(analagous to a Java .jar file) rather than a directory, and files are
>preferable to directories in most cases as they make Python import
>processing faster.
><snip>
Yes, it's true, zipfile import processing is faster than normal import
processing; it is in fact one of the reasons zipfile imports were added to
Python, because the zip directories are cached. A zipfile import lookup is
a single dictionary lookup, whereas a directory import lookup requires
multiple stat() calls. For all practical purposes, zipfiles added to
sys.path are free after the initial directory read operation.
Note that the need for a .pth is a limitation caused by the requirement to
have packages importable at startup. Packages installed in "multi-version"
or "deactivated" mode are only added to sys.path upon request and have no
impact on startup time. Relatively few eggs *need* to be installed with a
.pth file; we are simply in a transitional period where people still expect
"installed" packages to be importable without an additional require()
operation.
Finally, I think it's important to note that what Debian should or should
not use isn't really relevant to Debian's users, who will quite simply need
eggs for many packages. If Debian doesn't provide them, the users will be
forced to obtain them elsewhere. Over time, the number of packages that
users need in egg form will continue to increase, and there will be an
increasing number of users wanting to know why Debian can't provide
them. It's perfectly reasonable not to redo existing Debian packages to
use eggs, but for some packages, *not* using eggs is simply not an option.
More information about the Distutils-SIG
mailing list