關于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”)中可以找到就可以。 - 適用于模塊獨立存在 或者 在頂級包內
總結
??相對導入和絕對導入的主要區別在于它們的路徑解析方式。相對導入更加靈活,適用于包內部模塊之間的引用,而絕對導入更加明確,適用于獨立模塊或頂級包下的模塊引用。選擇哪種導入方式,取決于你的模塊結構和項目組織方式。