Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert all relative imports to absolute automatically in python

Tags:

python

import

I am trying to structure my python 2.7 project (which entails several subdirectories) correctly. I have added __init__.py files on every level, and in the case of imports it seems that the "best" practice is to use absolute imports of the sort:

import top_package_folder.package_subfolder.module_name

instead of:

import .module_name

even when my code lives in the package_subfolder directory.

As I learned about this recently, I am now looking for a way to automatically convert all those relative imports to absolute ones.

(I tried autopep8 and could not manage to make imports absolute.)

Thanks in advance.

like image 608
petroslamb Avatar asked Dec 18 '14 14:12

petroslamb


1 Answers

You can use absolufy-imports https://github.com/MarcoGorelli/absolufy-imports :

Installation

pip install absolufy-imports

Usage as a pre-commit hook

See pre-commit for instructions

Sample .pre-commit-config.yaml:

-   repo: https://github.com/MarcoGorelli/absolufy-imports
    rev: v0.3.1
    hooks:
    -   id: absolufy-imports

Command-line example

$ cat mypackage/myfile.py
from . import __version__

$ absolufy-imports mypackage/myfile.py

$ cat mypackage/myfile.py
from mypackage import __version__

Disclaimer: I'm the author of this little package

like image 161
ignoring_gravity Avatar answered Nov 09 '22 02:11

ignoring_gravity