Egon Frerich wrote: [Egon, please post in plain test, not html. Thank you]
> I have a problem with a namespace. There is a module mptt (actally from > Django). If I import this module with the interpreter it tells me the > namespace: > > Python 3.3.5 (default, Apr 12 2014, 23:34:20) > [GCC 4.6.3] on linux > Type "help", "copyright", "credits" or "license" for more information. > > import mptt > print(mptt) > > <module 'mptt' from './mptt/__init__.py'> > > > If I import mptt in my program then there is no ImportError but the > namespace is broken: > > <module 'mptt' (namespace)> > > (This is the output with print after the import). > > What is the meaning? When does this happened? Basically Python 3 allows for packages to omit the __init__.py $ mkdir aaa $ python3 -c'import aaa; print(aaa)' <module 'aaa' (namespace)> $ touch aaa/__init__.py $ python3 -c'import aaa; print(aaa)' <module 'aaa' from './aaa/__init__.py'> Namespace packages have advantages when you want to merge submodules from multiple places into one package. See <http://legacy.python.org/dev/peps/pep-0420/> for the details. Your actual problem is probably that the parent directory for the mptt package is not in your sys.path, but an unrelated directory with a mptt subdirectory (that may not contain any python code) is. This is the disadvantage of namespace packages -- any old directory may be mistaken for a package. As to fixing the problem -- I don't know much about django, but you may need to invoke the interactive interpreter with $ python3 manage.py shell -- https://mail.python.org/mailman/listinfo/python-list