我有以下目录结构:
|_ director_script.py
|_ app/
|_ __init__.py
|_ ParentClass.py
|_ my_module/
|_ __init__.py
|_ MyClass.py
|_ MyClassTestCase.py
在我的director_script.py
我使用MyClass
,当我运行python director_script.py
时,脚本按预期运行,没有任何错误。但是,当我进入my_module
文件夹并使用python -m unittest MyClassTestCase
运行单元测试时,我收到错误:
ModuleNotFoundError: No module named 'app'
由MyClass.py
中的导入语句
from app.ParentClass import ParentClass
当我从director_script.py
运行此导入时,此导入正常,并且仅在单元测试时发生。
答案 0 :(得分:2)
您应该从app文件夹外部运行,任何具有__init__.py
的文件夹都是python中的子模块。如果将当前工作目录设置为my_module,则无法看到应用程序模块,除非您具有与PYTHONPATH
环境变量中设置的app文件夹对应的文件夹路径
答案 1 :(得分:0)
将名为__init__.py
的文件添加到顶部文件夹
答案 2 :(得分:0)
有点像kludge,但这就是我通常做的事情:
import sys
sys.path.append('../app')
或在Windows下:
sys.path.append('..\\app')
当然,这需要在你的模块导入之前。