在python中将所有相对导入自动转换为绝对值

pet*_*amb 7 python import

我正在尝试正确构建我的python 2.7项目(包含几个子目录)。我在每个级别上都添加了__init__.py文件,对于导入,似乎“最佳”做法是使用这种类型的绝对导入:

import top_package_folder.package_subfolder.module_name
Run Code Online (Sandbox Code Playgroud)

代替:

import .module_name
Run Code Online (Sandbox Code Playgroud)

即使我的代码位于package_subfolder目录中。

正如我最近了解到的那样,我现在正在寻找一种将所有这些相对进口自动转换为绝对进口的方法。

(我尝试使用autopep8,但无法使导入绝对。)

提前致谢。

mar*_*lli 9

您可以使用absolufy-imports https://github.com/MarcoGorelli/absolufy-imports

安装

pip install absolufy-imports
Run Code Online (Sandbox Code Playgroud)

用作预提交挂钩

请参阅预提交以获取说明

样本.pre-commit-config.yaml

pip install absolufy-imports
Run Code Online (Sandbox Code Playgroud)

命令行示例

$ cat mypackage/myfile.py
from . import __version__

$ absolufy-imports mypackage/myfile.py

$ cat mypackage/myfile.py
from mypackage import __version__
Run Code Online (Sandbox Code Playgroud)

免责声明:我是这个小包的作者