[Distutils] namespace package doesn't get its __init__.py file if --single-version-externally-managed

Phillip J. Eby pje at telecommunity.com
Tue Oct 2 03:50:39 CEST 2007

At 03:02 PM 10/1/2007 -0600, zooko wrote:
>The full version is here:
>The short version is that if you run ./setup.py install --single-
>version-externally-managed from the zope.interface 3.4.0 source tree,
>you'll get everything you need to import zope.interface except for
>the "zope/__init__.py" file.
>Is this a bug in setuptools?

--single-version-externally-managed is intended for installation in 
site-packages, especially by system packages.  It thus *cannot* 
install the __init__.py without conflicting with other system 
packages that include code that's part of the same namespace 
package.  Thus, it installs a .pth file to work around the absence of 
the __init__.py

Unfortunately, this doesn't work if you install to a location that 
doesn't support .pth files.  If you are installing to a PYTHONPATH 
directory, you need to install setuptools' special 'site.py' to make 
that directory function in the same way that site-packages does.

Please remember that --single-version-externally-managed option is 
intended primarily for the benefit of system packaging 
tools.  Routine or even manual use is not recommended, because it's 
not manageable without some kind of management tool.  Hence the 
phrase, "externally managed".  :)

More information about the Distutils-SIG mailing list