我是Python的新手,无法理解它如何定位来自绝对导入的模块。如果模块的名称不在缓存中,也不在内置模块列表中,则Python将搜索 sys.path 定义的列表,该列表将当前位置作为第一个条目。现在,假设我在驱动器上的随机位置处具有以下结构:
└── project
├── package1
│ ├── module1.py
│ └── module2.py
└── package2
├── __init__.py
├── module3.py
├── module4.py
└── subpackage1
└── module5.py
在 project.package2.subpackage1 中的 module5 中的和代码(例如顶级代码)想要在 some_function > project.package1.module1 。在这种情况下,导入机器所拥有的我的项目位置的唯一条目是导入代码的当前位置,即路径 project / package2 / subpackage1 。
相对来说,我会写:
from ..package1.module1 import some_function
这是可以理解的工作方式,因为它相对于当前位置获取导入的资源。
但是在绝对导入的情况下,需要上例中项目的根文件夹 project ,定位过程如何进行?它如何从当前位置导航到目标位置,以给出绝对的,不相关的路径?