[Distutils] namespace packages broken in ubuntu with zc.buildout 1.5?

Marius Gedminas marius at pov.lt
Thu Apr 12 16:51:04 CEST 2012


On Thu, Apr 12, 2012 at 12:16:22PM +0200, Wichert Akkerman wrote:
> I am running into something very odd on an Ubuntu 11.10 system: it
> looks like namespace packages are entirely broken there.

Interesting.  As a data point: I use zc.buildout 1.5.2 on Ubuntu 11.10.
I haven't encountered any namespace issues yet.

> Here is a
> pdb session to demonstrate:
> 
> (Pdb) import repoze
> (Pdb) repoze
> <module 'repoze' from '/home/wichert/lib/buildout/eggs/repoze.formapi-0.4.2-py2.7.egg/repoze/__init__.pyc'>
> (Pdb) repoze.__path__
> ['/home/wichert/lib/buildout/eggs/repoze.sphinx.autointerface-0.6.2-py2.7.egg/repoze', '/home/wichert/lib/buildout/eggs/repoze.formapi-0.4.2-py2.7.egg/repoze']
> 
> So at this point I can import the repoze namespace packages, which
> is defined by both repoze.sphinx.autointerface and repoze.formapi.
> Now I try to import repoze.sphinx.autointerface:
> 
> (Pdb) import repoze.sphinx.autointerface
> *** ImportError: No module named autointerface
> 
> That is unexpected since we saw the repoze.sphinx.autointerface egg
> was found earlier. So lets look at repoze.sphinx:
> 
> (Pdb) repoze.sphinx
> <module 'repoze.sphinx' from
> '/usr/lib/pymodules/python2.7/sphinx/__init__.pyc'>

Do you have a small sample buildout.cfg so that I could try to reproduce
this?  This one worked for me:

    $ cat buildout.cfg
    [buildout]
    parts = wtf

    [wtf]
    recipe = z3c.recipe.scripts
    # recipe = zc.recipe.egg also worked fine
    eggs =
        Sphinx
        repoze.formapi
        repoze.sphinx.autointerface
    interpreter = python

    $ python bootstrap.py
    $ bin/python
    Python 2.7.2+ (default, Oct  4 2011, 20:03:08) 
    >>> import repoze
    >>> repoze.__path__
    ['/home/mg/.buildout/eggs/repoze.formapi-0.5.0-py2.7.egg/repoze', '/home/mg/.buildout/eggs/repoze.sphinx.autointerface-0.6.2-py2.7.egg/repoze']
    >>> import repoze.sphinx.autointerface
    >>> repoze.sphinx
    <module 'repoze.sphinx' from '/home/mg/.buildout/eggs/repoze.sphinx.autointerface-0.6.2-py2.7.egg/repoze/sphinx/__init__.pyc'>

even though I also have sphinx installed into my dist-packages
(/usr/lib/pymodules/python2.7/sphinx/__init__.pyc exists).

> I did not see that coming at all: how can a system sphinx package
> that is not inside the repoze namespace suddenly appear there? This
> is especially odd since buildout hooked me up with a sphinx package
> in the buildout itself:
> 
> (Pdb) import sphinx
> <module 'sphinx' from '/home/wichert/lib/buildout/eggs/Sphinx-1.0.1-py2.7.egg/sphinx/__init__.pyc'>
> 
> I am not sure who is responsible for this behaviour or how to debug
> this. Does anyone have any useful hints?

Not really.  I'm afraid when I encounter buildout issues, I'm in the
"aaargh no time for yak shaving NOW" mode, so I tend to intuitively
twiddle some knobs like 'include-site-packages = false' for 10-15
minutes until it starts working.

Marius Gedminas
-- 
Hanlon's Razor:
        Never attribute to malice that which is adequately explained
        by stupidity.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: Digital signature
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20120412/05fe8ef8/attachment.pgp>


More information about the Distutils-SIG mailing list