【发布时间】:2021-10-19 11:15:39
【问题描述】:
想象一下这个目录结构:
app/
__init__.py
sub1/
__init__.py
mod1.py
sub2/
__init__.py
mod2.py
我正在编码mod1,我需要从mod2 导入一些东西。我该怎么做?
我尝试了from ..sub2 import mod2,但我得到了“尝试在非包中进行相对导入”。
我四处搜索,但只发现“sys.path 操纵”黑客。没有干净的方法吗?
编辑:我所有的__init__.py 目前都是空的
Edit2:我正在尝试这样做,因为 sub2 包含跨子包共享的类(sub1、subX 等)。
Edit3:我正在寻找的行为与PEP 366 中描述的行为相同(感谢 John B)
【问题讨论】:
-
我建议更新您的问题,以更清楚地说明您描述的是 PEP 366 中解决的问题。
-
这是一个冗长的解释,但请看这里:stackoverflow.com/a/10713254/1267156 我回答了一个非常相似的问题。直到昨晚我都遇到了同样的问题。
-
对于那些希望加载位于任意路径的模块的人,请参阅:stackoverflow.com/questions/67631/…
-
在相关说明中,Python 3 将默认情况下将导入的默认处理更改为绝对;必须明确指定相对导入。
标签: python python-import python-module