What's wrong with relative imports in Python?

Posted by Oddthinking on Programmers See other posts from Programmers or by Oddthinking
Published on 2012-08-04T15:29:52Z Indexed on 2012/12/02 23:25 UTC
Read the original article Hit count: 525

Filed under:
|
|
|

I recently upgraded versions of pylint, a popular Python style-checker.

It has gone ballistic throughout my code, pointing out places where I import modules in the same package, without specifying the full package path.

The new error message is W0403.

W0403: Relative import %r, should be %r

Used when an import relative to the package directory is detected.


Example

For example, if my packages are structured like this:

/cake
  /__init__.py
  /icing.py
  /sponge.py
/drink

and in the sponge package I write:

import icing

instead of

import cake.icing

I will get this error.


While I understand that not all Pylint messages are of equal importance, and I am not afraid to dismiss them, I don't understand why such a practice is considered a poor idea.

I was hoping someone could explain the pitfalls, so I could improve my coding style rather than (as I currently plan to do) turning off this apparently spurious warning.

© Programmers or respective owner

Related posts about python

Related posts about coding-style