Python 更多的相对进口奇怪:。。符号

Python 更多的相对进口奇怪:。。符号,python,import,Python,Import,我注意到我问了大约5个关于相对进口的问题,每个问题都有可行的解决方案,但情况不同。我读的文件越多,尝试不同的案例越多,我就越感到困惑和质疑我是否真的读对了单词 从政治公众人物328: 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 c

我注意到我问了大约5个关于相对进口的问题,每个问题都有可行的解决方案,但情况不同。我读的文件越多,尝试不同的案例越多,我就越感到困惑和质疑我是否真的读对了单词

从政治公众人物328:

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. run.py导入needLib:
来自插件导入needLib

needLib导入myLib:
from..lib导入myLib

我脑子里在想什么:(needLib)拿起一个包裹,进入lib,抓住myLib

下面是我的执行方式:
python run.py

结果:尝试了超出顶级包的相对导入

但是当我将import调用从.lib import myLib更改为
时,它就可以工作了

我不明白为什么后者有效,而
符号无效。当然,
main
不是一个包,所以我也在那里加入一个
init.py
,结果是

main/ lib/ __init__.py myLib.py other/ __init__.py needLib.py __init__.py run.py 主要/ 解放党/ __初始值 myLib.py 其他/ __初始值 needLib.py __初始值 run.py 但这没有什么区别;仍在尝试导入顶级包之外的内容

看看这个问题:

符号实际上起作用了!现在我想起来了,我不明白为什么它会起作用。该场景中的执行从发生相对导入的位置开始上升2级,而此场景中的执行从发生相对导入的位置开始上升1级。除了我开始执行外,情况是一样的

这两个都是我说的“上一个目录,进入lib包,获取您想要的模块”


这种情况与参考情况之间的主要区别是什么?为什么
在那里工作,而不是在这里?我使用2.6与此有关吗?或者我是如何执行它的
python run.py

正如您所发现的,
from..lib import myLib
不起作用,因为
main
不是一个包。相对导入仅在模块自己的包中工作。在您的示例中,
lib
other
是两个不同的包

只有将
run
移动到新创建的
main
包之外,才能将
\uuuuu init\uuuuuuuuuuuuuuupy
放在
main
中,这样当前目录(系统路径的一部分)才在包内

main/ lib/ __init__.py myLib.py other/ __init__.py needLib.py __init__.py run.py