python从另一个模块导入本地模块

时间:2019-02-22 16:59:22

标签: python python-3.x import

我具有以下结构:

root/
    folder1/
        main.py
        secondary.py
    folder2/
        test.py

main.py代码始终从root文件夹运行,因此在main.py上我有一个

from folder1.secondary import * 

所以我可以在main.py上使用它的功能-效果很好

tests.py上,我这样做:

from root.folder1.main import myfunction 

(这是我需要测试的唯一功能),但未显示"ModuleNotFoundError: No module named 'folder1.secondary'

rootsys.path

我不明白为什么直接导入main.py但不能从另一个文件夹导入。我该如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:0)

每个目录中都必须有一个名为__init__.py的文件,以便Python解释器将该目录视为可以从中导入内容的模块。该文件可以为空,但必须这样命名。

您的新目录结构如下:

root/
    __init__.py
    folder1/
        __init__.py
        main.py
        secondary.py
    folder2/
        __init__.py
        test.py

然后您可以通过执行main.pytest.py导入from root.folder1.main import myfunction