On 16 Jul, 2013, at 14:02, Thomas Wouters <tho...@python.org> wrote:
> On Tue, Jul 16, 2013 at 1:40 PM, Nick Coghlan <ncogh...@gmail.com> wrote: > >> PEP 8 advises developers to use absolute imports rather than explicit >> relative imports. >> >> Why? Using absolute imports couple the internal implementation of a >> package to its public name - you can't just change the top level >> directory name any more, you have to go through and change all the >> absolute imports as well. You also can't easily vendor a package that >> uses absolute imports inside another project either, since all the >> absolute imports will break. >> > > The problem with relative imports (both explicit and implicit) is that it > makes it less obvious when you are importing a module under the wrong name. > If a package ends up in sys.path directly (for example, by executing > something that lives inside it directly) then an explicit relative import > directly in the package will fail, but an explicit relative import in a > sub-package won't, and you can end up with the subtly confusing mess of > multiple imports of the same .py file under different names. That's only a problem for subpackages (that is, for example when distutils.commands ends up being importable as commands), because explicit relative imports (``from .other import attr``) don't work in toplevel modules or scripts because the leading dot means "the current package". I tend to use explicit relative imports in my code when that increases readability by reducing unnecessary duplication. That is, readability tends to suffer when you have a number of lines like with "from package.module1 import name". Ronald _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com