问题描述
好的,图中是两个 MWE 及其失败消息。
换句话说,我不能自然地从同一个子目录导入到我想作为主要运行的模块进行测试。这是第一张截图。
下一个屏幕截图显示,我无法自然地从项目根目录导入子目录模块,该子目录模块同样作为 main 运行以进行测试。
视觉效果:
我不想做的是像我在我所有的项目中所做的那样,用如下几行来破解我的方式:
if __name__ == '__main__:
import sys
sys.append('..')
这是不雅的,因为它无法承受更改文件夹结构。
我还尝试将空白的 __init__.py
放入子目录中,并尝试放入如下行:
from .e import E
似乎没有什么容易的。当我在导入时无法处理基本的文件结构,这真的很糟糕。
文本代码:
<proj root>/d.py
:
class D:
pass
<proj root>/root.py
:
from b.a import A
print("import from project root main")
<proj root>/b/a.py
:
from b.c import C
class A(C):
pass
if __name__ == '__main__':
print('import from project subdir')
<proj root>/b/c.py
:
class C:
pass
<proj root>/b/e.py
:
from d import D
class E(D):
pass
if __name__ == '__main__':
print("e can't import something from root")
首先将入口点设置为 a.py
,将另一个错误的入口点设置为 e.py
。
谢谢!