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

标签 python import

我正在尝试正确构建我的 python 2.7 项目(它需要几个子目录)。
我在每个级别都添加了 __init__.py 文件,在导入的情况下,似乎“最佳”做法是使用 绝对 进口种类:

import top_package_folder.package_subfolder.module_name

代替:
import .module_name

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

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

(我尝试了 autopep8,但无法将导入设为绝对值。)

提前致谢。

最佳答案

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

pip install absolufy-imports
用作预提交 Hook
pre-commit用于说明
sample .pre-commit-config.yaml :
-   repo: https://github.com/MarcoGorelli/absolufy-imports
    rev: v0.3.1
    hooks:
    -   id: absolufy-imports
命令行示例
$ cat mypackage/myfile.py
from . import __version__

$ absolufy-imports mypackage/myfile.py

$ cat mypackage/myfile.py
from mypackage import __version__

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

关于python - 在python中自动将所有相对导入转换为绝对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27549291/

相关文章:

python - BaseHTTPServer 和 SimpleHTTPServer 有什么区别?何时何地使用它们?

python - 列表中列表的直方图

python - 在数据框中插入记录的 concat 的替代方法

python - 在 pandas python 中使用 read_csv(..) 导入时如何处理 .csv 文件中不匹配的引号

java - 在 Java 中只使用一个库

SQL Server Management Studio 2012 - 从表导出/导入数据

python - 如何将欧元货币字符串转换为 float ?

python - 这个 cudaGetDevice() 失败可能是什么问题。状态 : cudaGetErrorString symbol not found

python - 支持Python 2和Python 3的标准方案

java - 在 NetBeans 中编写程序时如何使用 .jar 文件中的代码