Python 更多的相对进口奇怪:。。符号
我注意到我问了大约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: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
来自插件导入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