How to improve the usability of nested packages

Stefan H. Holek stefan at epy.co.at
Fri Nov 2 19:23:00 CET 2012


Hi Michael,

What we have learned from creating the Zope Toolkit (formerly Zope 3), is that __init__.py files in namespace packages should be empty, and imports should be absolute. [1]

That said, there are ways to avoid import cycles. One is to very carefully craft your modules so they do not have to import from each other. Another is to not have imports at the module level, but move them into the functions where they are required. Third, large libraries like the Zope Toolkit usually have mechanisms to defer imports to some point after initial loading. You may want explore this direction as well. [2]

(Not trying to plug the ZTK here, it just happens to be a large, namespace-using library I know.)

Hope this helps,
Stefan

[1] http://docs.zope.org/zopetoolkit/
[2] http://pypi.python.org/pypi/zope.deferredimport

-- 
Stefan H. Holek
stefan at epy.co.at



More information about the Python-list mailing list