1 回答

TA贡献1865条经验 获得超7个赞
这是因为在Python中,如果你尝试导入同一个模块两次,Python将不会第二次在文件系统中搜索。它将使用第一次导入的模块。您正尝试导入两次该模块main。即使您认为这是两个不同的模块,从 Python 的角度来看,您也会尝试导入同一个模块两次(因为它们都被命名为main)。您可以在文档中阅读有关模块缓存系统的更多详细信息。
根据您想要做什么,可能有很多解决方案。这是两个:
解决方案1
您可以简单地将主模块的名称更改为不同的名称:
app.py
right/
main1.py
test_solution1.py
wrong/
main2.py
test_solution2.py
test_solution.py
import main1
def test_subtract():
assert main1.subtract(5, 3) == 2
test_solution2.py
import main2
def test_subtract():
assert main2.subtract(5, 3) == 2
解决方案2
您保留相同的文件名,但指定要导入的子模块:
test_solution.py
from right import main
def test_subtract():
assert main.subtract(5, 3) == 2
test_solution2.py
from wrong import main
def test_subtract():
assert main.subtract(5, 3) == 2
这是可行的,因为 Python 在搜索模块时会在本地目录中查找,并且您在 和 文件夹所在的相同位置启动app.pyPython 。rightwrong
添加回答
举报