Python可以';找不到嵌套的包
我的项目结构如下: 我的c.py是这样的:Python可以';找不到嵌套的包,python,Python,我的项目结构如下: 我的c.py是这样的: def test(): print('sub_package') def test(): import sub_package.c print(sub_package.c.test()) print('test') #test() 我的b.py是这样的: def test(): print('sub_package') def test(): import sub_package.c
def test():
print('sub_package')
def test():
import sub_package.c
print(sub_package.c.test())
print('test')
#test()
我的b.py是这样的:
def test():
print('sub_package')
def test():
import sub_package.c
print(sub_package.c.test())
print('test')
#test()
我可以直接运行b.py并毫无问题地获得导入的sub_包
但是如果我运行main.py,它就像:
import package.b
print(package.b.test())
python会抱怨:
Traceback (most recent call last):
File "D:\test_package\main.py", line 1, in <module>
import package.b
File "D:\test_package\package\b.py", line 10, in <module>
test()
File "D:\test_package\package\b.py", line 4, in test
import sub_package.c
ModuleNotFoundError: No module named 'sub_package'
回溯(最近一次呼叫最后一次):
文件“D:\test\u package\main.py”,第1行,在
进口包装.b
文件“D:\test\u package\package\b.py”,第10行,在
测试()
文件“D:\test\u package\package\b.py”,第4行,在测试中
导入sub_package.c
ModuleNotFoundError:没有名为“sub_package”的模块
它找到了包,但为什么找不到嵌套的sub_包呢?自从采用 在这种情况下,您需要在
b.py
中使用显式相对导入,如下所示:
from .sub_package import c
print(c.test())
或者可以使用绝对导入,如下所示:
from package.sub_package import c
print(c.test())