在Python中的包之间导入

问题描述 投票:0回答:1

我在理解 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,但我认为我没有完全理解这些策略背后的概念。

python import package
1个回答
0
投票

这很奇怪

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 的初学者,这是我的第一个贡献,所以如果我做错了什么,请不要生气,谢谢!)

© www.soinside.com 2019 - 2024. All rights reserved.