关于Python模块导入的写法有 相对路径导入
和 绝对路径导入
两种不同的导入路径的写法。
文章目录
- 相对路径导入
- 绝对路径导入
- 总结
相对路径导入
from .utils import upblock2d, crossattn_upblock2d
- 使用了相对导入,以(“.”)开头
- 这种导入方法
依赖当前模块的包结构
。也就是说这种写法需要保证 当前模块和 utils 在同一个包或者子包中。 - 另外,
“.”表示当前包,“..”表示上一级包
my_project/
│
├── main_module.py
└── sub_package/
├── __ init__.py
├── utils.py
└── another_module.py
绝对路径导入
from utils import upblock2d, crossattn_upblock2d
- 使用了绝对路径(前面没有点)
- 这种导入方式
不依赖当前的模块的位置
。也就是说只需要保证 utils模块在Python的搜索路径(如“PYTHONPATH”)中可以找到就可以。 - 适用于模块独立存在 或者 在顶级包内
总结
相对导入和绝对导入的主要区别在于它们的路径解析方式。相对导入更加灵活,适用于包内部模块之间的引用,而绝对导入更加明确,适用于独立模块或顶级包下的模块引用。选择哪种导入方式,取决于你的模块结构和项目组织方式。