我具有以下结构:
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'
root
在sys.path
我不明白为什么直接导入main.py
但不能从另一个文件夹导入。我该如何解决这个问题?
谢谢
答案 0 :(得分:0)
每个目录中都必须有一个名为__init__.py
的文件,以便Python解释器将该目录视为可以从中导入内容的模块。该文件可以为空,但必须这样命名。
您的新目录结构如下:
root/
__init__.py
folder1/
__init__.py
main.py
secondary.py
folder2/
__init__.py
test.py
然后您可以通过执行main.py
将test.py
导入from root.folder1.main import myfunction
。