已放置__init__.py仍遇ModuleNotFoundError:无法找到cdk_code模块
模块导入错误解决方案:ModuleNotFoundError: No module named 'cdk_code'
我已在项目对应位置放置了__init__.py文件,但运行tests/unit/test_cicd_in_aws_stack.py时,执行from cdk_code.cicd_in_aws_stack import CicdInAwsStack语句仍报错ModuleNotFoundError: No module named 'cdk_code'。项目结构如下:
. ├── README.md ├── app.py ├── cdk.json ├── cdk_code │ ├── __init__.py │ ├── cicd_in_aws_stack.py <--- 从这里导入CicdInAwsStack类 │ ├── lambda_stack.py │ └── stage.py ├── requirements-dev.txt ├── requirements.txt ├── source.bat └── tests ├── __init__.py └── unit ├── __init__.py └── test_cicd_in_aws_stack.py <--- 在这里导入CicdInAwsStack类
解决方法
临时添加项目根目录到Python路径
在测试文件的最顶部添加代码,手动将项目根目录加入Python的搜索路径:import sys from pathlib import Path # 获取项目根目录(当前测试文件的上上级目录) project_root = Path(__file__).parent.parent.parent sys.path.append(str(project_root)) # 之后再执行导入语句 from cdk_code.cicd_in_aws_stack import CicdInAwsStack安装项目为可编辑模式(推荐长期开发)
在项目根目录执行以下命令,将当前项目以可编辑模式安装到Python环境,让Python自动识别项目模块:pip install -e .执行后无需修改测试脚本,直接运行测试即可。
确保在项目根目录运行测试命令
运行测试时必须处于项目根目录,比如执行:python -m pytest tests/unit/test_cicd_in_aws_stack.py -v若在
tests/unit目录下直接运行脚本,Python会以该目录为搜索根,无法找到上层的cdk_code模块。
内容的提问来源于stack exchange,提问作者marcin2x4
相关产品推荐
相关产品推荐

