运行单元测试遇ModuleNotFoundError,如何修复Python导入问题?
解决Python模块导入报错的方案
1. 把目录标记为Python包
给code、modules、tests目录都创建空的__init__.py文件,让Python识别这些目录为可导入的包。调整后的结构:
- code __init__.py - modules __init__.py - tests __init__.py test_data_quality_service.py data_quality_service.py - web __init__.py
2. 配置PYTHONPATH环境变量
把包含code文件夹的项目根目录添加到PYTHONPATH:
- Linux/macOS终端临时设置:
export PYTHONPATH="/path/to/your/project/root:$PYTHONPATH" - Windows终端临时设置:
set PYTHONPATH=C:\path\to\your\project\root;%PYTHONPATH%
设置完成后,就能正常使用绝对导入:
from code.modules.data_quality_service import DataQualityChecker
3. 正确使用相对导入
用相对导入时,不要直接运行测试文件,要在项目根目录下执行pytest命令:
pytest code/modules/tests/test_data_quality_service.py
此时测试文件里的相对导入语句from ..data_quality_service import DataQualityChecker就能正常工作。
4. PyCharm专属配置
右键点击项目根目录(包含code的文件夹),选择Mark Directory as -> Sources Root,PyCharm会自动将该目录加入PYTHONPATH,识别完整的包结构,解决导入报错。
内容的提问来源于stack exchange,提问作者dark_matter88
相关产品推荐
相关产品推荐

