[Python-Dev] Dots in __name__ break import -- fixable?
Guido van Rossum
guido at python.org
Tue Jan 6 18:18:00 EST 2004
> There must be some code in the import machinery that assumes (with
> excellent reason) that the __name__ of the module from which it is
> called will never contain periods.
Right. Periods in module names are used for the package namespace.
(Import some code that uses packages and then print sys.modules.keys()
to see how.)
> Consider the following:
>
> >>> __name__ = 'a.b.c'
> >>> import string
> >>> string
> <module 'a.b.string' from '/usr/lib/python2.3/string.pyc'>
>
> The peculiar behavior is *only* triggered by periods:
>
> >>> __name__ = ''.join(map(chr, range(1, 256))).replace('.', '')
> >>> import string
> >>> string
> <module 'string' from '/usr/lib/python2.3/string.pyc'>
>
> Would this be easy to fix?
No.
> It would fall into the realm of "so don't do that!" except that Zope's
> Python Scripts set their __name__ to their Zope Id, which can contain
> periods.
Too bad.
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list