python3 相对引入

宋圣斌 2周前 9浏览 0评论

Python3 相对引入是一种在导入模块时,指定相对路径来避免与其他模块名称冲突的技术。这种引入方式常常用于在项目中使用多个模块时,避免名称空间中出现同名模块的情况。

# 当前模块在项目中位于pkg1.module1目录下
# pkg1.module1.module2是当前模块的一个子模块

# 相对导入
from . import module2  # 表示从当前模块的父级目录中导入module2

# 绝对导入
from pkg1.module1 import module2  # 表示从pkg1.module1路径下导入module2

相对引入中点号(.)表示跳转到当前模块的父级目录。点号(.)的个数表示跳转父级目录的层数。

需要注意的是,在Python3中相对导入只支持在包内使用,即在目录下必须有一个空的`__init__.py`文件来作为导入的起点,否则会抛出ModuleNotFoundError错误。

pkg1
├── __init__.py
├── module1
│   ├── __init__.py
│   ├── module2.py

在以上的示例中,当我们执行相对导入代码时,Python3解析器会从pkg1.module1的路径开始定位,找到上级目录pkg1下的__init__.py文件,然后从该目录开始查找module2.py文件,并将其导入。如果没有找到相应的文件,则会抛出ModuleNotFoundError错误。

总的来说,Python3相对引入是一种方便管理模块名称空间的方式,在多模块开发中应用十分广泛,但需要注意导入时的路径和目录结构,以免出现错误。