More relative import oddness: .. notation
我注意到,我问了5个有关相对进口的问题,每个问题都有解决方案,但情况不同。我越是阅读文档,越是尝试不同的案例,我就越是困惑,并质疑我是否真正正确地阅读了单词。
来自PEP 328:
1 2 3 4 | A single leading dot indicates a relative import, starting with the current package. Two or more leading dots give a relative import to the parent(s) of the current package, one level per dot after the first. |
我的理解是"当前包"是这里的关键字。什么是"当前套餐"?它是执行开始的模块的包吗?(即:文件名为"主文件")。
总之,这里有一个我使用
1 2 3 4 5 6 7 8 | main/ lib/ __init__.py myLib.py plugin/ __init__.py needLib.py run.py |
run.py导入needlib:EDOCX1[1]
needlib导入mylib:
我脑子里在想什么:(needlib)打开一个包,进入lib,抓取my lib
我是这样执行的:
结果:尝试在顶级包之外进行相对导入
但当我把import调用改为
我不明白为什么后者起作用,而
1 2 3 4 5 6 7 8 9 | main/ lib/ __init__.py myLib.py other/ __init__.py needLib.py __init__.py run.py |
但这并没有什么不同;仍在尝试导入顶级包之外的内容
检查这个问题:python:强制相对导入从脚本文件搜索
这两个都是我说的"上一个目录,进入lib包,并获取您想要的模块"。
这种情况与参考情况之间的关键区别是什么?为什么
正如您发现的,
在