Python可以';找不到嵌套的包

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

我的项目结构如下:

我的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

    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())