[Python-Dev] Why does PEP 8 advise against explicit relative imports? (original) (raw)

Barry Warsaw barry at python.org
Tue Jul 16 16:48:55 CEST 2013


On Jul 16, 2013, at 02:02 PM, Thomas Wouters wrote:

In my experience changing the name of a package is problematic for more reasons than just 'import'. We used to do the put-in-a-package thing for third-party packages at Google, and we quit doing it because it was just too painful: it's hard to find all the places that reference the package by name (think of import, or mucking in sys.modules), and it's extra problematic with packages that contain extension modules. You can't rename a package, even for 'vendoring a package', without carefully checking whether it'll work -- unless you don't care if it'll work, of course :) The alternative is to include a package without changing its name (by adding the right directory, without init.py, to sys.path) and that has worked out a lot better for us.

Vendoring also gives no end of headaches to distro packagers because we have to un-vendor that stuff, which can lead to a mess of patches on top of upstream.

Even so, there's no reason for the standard library to use explicit relative imports, and that's what PEP 8 is supposed to cover, right? :)

Right! It doesn't bother me at all that this particular recommendation may be followed by third parties too. :)

-Barry



More information about the Python-Dev mailing list