我正在寻找一种从Python 3的包中导入子包的方法。 考虑以下结构:
├── main.py
└── package
├── subpackage
│ └── hello.py
└── test.py
我想做的是在test.py(由main.py启动)中使用hello.py内部的函数
from package.test import print_hello
print_hello()
from subpackage.hello import return_hello
def print_hello():
print(return_hello())
def return_hello():
return "Hello"
但我发现了以下错误:
Traceback (most recent call last):
File ".\main.py", line 1, in <module>
from package.test import print_hello
File "D:\Python\python-learning\test\package\test.py", line 1, in <module>
from subpackage.hello import return_hello
ModuleNotFoundError: No module named 'subpackage'
我尝试将.
放在test.py
中,但是它起作用了,但是我的短毛猫不喜欢它。
我在做什么错了?
└── src
├── main.py
└── package
├── subpackage
│ └── hello.py
└── test.py
答案 0 :(得分:1)
只需使用
from .subpackage.hello import return_hello
代替
from subpackage.hello import return_hello
在您的test.py文件中,并阅读this指南以更好地了解导入在python中的工作方式。
您可以在此处看到固定的结果:https://repl.it/@ent1c3d/SoupySadUnderstanding