我在理解 python 中的导入系统时遇到问题。
为了这个问题,程序的结构如下:
**Demo
-- tests
____ __init__.py
---- test_1.py
---- test_2.py
-- main.py**
我已经掌握了导入的基本功能,并且当我使用同一包中的模块时一切正常。
在上面的程序中,我在 test_2.py 中创建了一个简单的函数,名为 hello:
def hello():
print("hello")
我已经导入到 test_1.py 中:
from test_2 import hello
到目前为止一切正常,但是当我尝试将 test_1.py 导入到 main.py (位于包之外)时,我陷入了困境,如下所示:
from tests import test_1
这会引发以下错误:
ModuleNotFoundError: No module named 'test_2'
现在,我明白发生这个错误是因为Python在导入时读取整个模块,因此它尝试执行导入语句,但找不到test2的路径(因为它不在同一个包中)。
我想将所有代码放在一个模块中,这样我就不必在包中使用任何导入,因此如果我在其他地方导入该包,代码不应中断,但这不是解决方案......
我确信这是一个非常基本的问题,所以在来这里之前我花了很多时间阅读 python 的文档并上网。 我遇到过不同的导入策略,例如:sys.path、importlib 或 PYTHONPATH,但我认为我没有完全理解这些策略背后的概念。
这很奇怪
from tests import test_1
抛出错误
ModuleNotFoundError: No module named 'test_2'
有错误吗?您要导入test_1.py还是test_2.py?
假设您要导入test_1.py,请尝试:
import tests.test_1
(我还是编程和 StackOverflow 的初学者,这是我的第一个贡献,所以如果我做错了什么,请不要生气,谢谢!)