[code-quality] Namespaced packages and relative imports

François Vanderkelen vanderkelen.francois at gmail.com
Fri May 16 15:57:02 CEST 2014


I tried multiple things, first even if I install the package before running
pylint it won't work except on one of my machines.

So I tried to narrow it down with setuptools :

Working with 0.9.8
Not working with 2.2 (ImportError)
Not working with 3.6 (ImportError)

I guess setuptools changed something concerning namespaces packages, bug or
not this is another story. I'll keep looking.

Thanks a lot Sylvain


2014-05-16 15:01 GMT+02:00 Sylvain Thénault <sylvain.thenault at logilab.fr>:

> On 16 mai 14:42, François Vanderkelen wrote:
> > Hi Sylvain,
> >
> > First of all thanks for the quick answer. I tried to create a dummy
> project
> > (the real one is confidential and not mine to give to the community) and
> it
> > helped me narrow down my two issues.
> >
> > The ImportError: No module named project is linked to the relative
> import,
> > and I could not reproduce the error in a dummy project. I finally found
> it,
> > it has to do with my namespaces packages.
> >
> > What I mean by namespaces is in my python library I dispose of several
> > packages like this :
> >
> > company.mongodb
> > company.redis
> > company.hbase
> >
> > And also :
> >
> > company.project.core
> > company.project.app.dashboard
> > company.project.app.security
> >
> > Where company and project are all the same things, this allows me and my
> > team to easily identify each package and what it is supposed to do. We
> try
> > to foster the open-source spirit in my company, hence the company
> top-level
> > namespace. It is still internal but at least we share it across all
> teams :)
> >
> > Going back to the issue, if one package of the namespace is installed,
> then
> > apparently pylint is looking directly inside the python path and can't
> find
> > my package since it is not yet installed. I have the same issue with the
> > "python setup.py develop" command, so I guess I am doing namespacing
> wrong,
> > or it is not well defined in python ?
> >
> > The only thing I do is adding
> > *_import__('pkg_resources').declare_namespace(__name__)
> > *in the __init__.py of the namespace package.
> >
> > If I run pylint in another environment without any packages installed, it
> > works like a charm (except I have a bunch of violations for missing
> > imports).
> >
> > Do you want me to open an issue on bitbucket explaining all that or do
> you
> > think I am doing something I am not supposed to do ?
>
> I think what you're doing is right.
>
> The crash has already been supported:
>
> https://bitbucket.org/logilab/pylint/issue/203/importing-namespace-packages-crashes
>
> It seems to me that the namespace package issue is related to recent
> version of
> setuptools and has also been reported but can't find it right away.
>
> --
> Sylvain Thénault, LOGILAB, Paris (01.45.32.03.12) - Toulouse
> (05.62.17.16.42)
> Formations Python, Debian, Méth. Agiles: http://www.logilab.fr/formations
> Développement logiciel sur mesure:       http://www.logilab.fr/services
> CubicWeb, the semantic web framework:    http://www.cubicweb.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/code-quality/attachments/20140516/99d85f9f/attachment.html>


More information about the code-quality mailing list