Pycharm auto relative imports

2019-02-16 21:38发布

问题:

Whenever you use autoimport provided by PyCharm it generates an absolute path import. i.e.

from my_package.my_subpackage import my_thing

instead of

from .my_subpackage import my_thing

Is there a setting to use relative imports instead of absolute ones when importing a python package?

回答1:

It appears currently there is no way to change the import style for auto-import feature to use relative imports. The only style changes you can make to import statements are how the absolute imports are structured:

(The Jetbrains/PyCharm settings search functionality is excellent by the way).

The same thing happens when refactoring, it's definitely an option I'd like to see added.



回答2:

I would advise against relative in general, you can refer to this question: https://softwareengineering.stackexchange.com/a/159505

Also, you can check official pep8 specs https://www.python.org/dev/peps/pep-0008/

Absolute imports are recommended, as they are usually more readable and tend to be better behaved (or at least give better error messages) if the import system is incorrectly configured (such as when a directory inside a package ends up on sys.path):

From my personal experience it turns out that they sometimes poorly integrate with Pycharm IDE when there's more complex package layout breaking test running through Pycharm. I suppose there might be some issues in other tools too.