[Distutils] namespace packages
P.J. Eby
pje at telecommunity.com
Thu Apr 22 18:10:38 CEST 2010
At 04:36 PM 4/22/2010 +0900, David Cournapeau wrote:
>On Thu, Apr 22, 2010 at 1:10 PM, P.J. Eby <pje at telecommunity.com> wrote:
> > At 10:18 AM 4/22/2010 +0900, David Cournapeau wrote:
> >>
> >> One problem with the setuptools implementation is
> >> that several packages sharing the same namespace have files in common,
> >
> > If that were actually true (it isn't), then it would be considered a bug in
> > setuptools.
>
>I am confused, then, by the setuptools doc:
>
>Note, by the way, that your project's source tree must include the
>namespace packages' __init__.py files (and the __init__.py of any
>parent packages), in a normal Python package layout. These __init__.py
>files must contain the line:
If you read two paragraphs further in that doc, you'll see where it
goes on to say:
"You must NOT include any other code and data in a namespace
package's __init__.py. Even though it may appear to work during
development, or when projects are installed as .egg files, it will
not work when the projects are installed using "system" packaging
tools -- in such cases the __init__.py files **will not be
installed**, let alone executed. " (emphasis added)
>and because that's in the rationale of Pep 382. If this is not true,
>we need to update our own instructions because we advise to write such
>__init__.py in scikits namespace in the scipy community.
You still need to write them, for egg-based installs. But when
packaged for *system* installation, they aren't going to be there.
> >> (setuptools namespace implementation depends on pkg_resources, which is a
> >> complicated and quite slow piece of code).
> >
> > Slow at doing what, precisely, and slower compared to what alternative?
>
>Merely importing it is already quite slow,
I'd be interested in knowing under what conditions that's the case
(e.g. how many .egg zipfiles vs. how many .egg subdirs); it might be
possible to improve it.
More information about the Distutils-SIG
mailing list