VS Code+Conda环境下src模块导入失败问题求助
解决Python模块导入错误:ModuleNotFoundError: No module named 'src'
问题梳理
首先纠正你可能笔误的目录结构(根据报错文件路径src/components/data_ingestion.py,实际正确结构应为):
MLProjects └── src ├── __init__.py ├── logger.py ├── exception.py └── components ├── __init__.py └── data_ingestion.py
你当前工作目录为MLProjects,尝试多种导入语句均报错,核心原因是Python无法识别src作为顶层模块,或运行方式不符合包导入规则。
解决方案
方案一:相对导入 + 模块式运行
- 在
data_ingestion.py中使用相对导入:from ..exception import CustomException from ..logger import logging - 回到
MLProjects目录,用模块方式运行脚本:
(python -m src.components.data_ingestion-m参数会将当前目录(MLProjects)加入Python的模块搜索路径,让Python正确识别src包结构)
方案二:设置PYTHONPATH环境变量
- 在VS Code终端(当前目录为MLProjects)执行:
- Windows(Conda环境):
set PYTHONPATH=%cd% - Linux/macOS:
export PYTHONPATH=$(pwd)
- Windows(Conda环境):
- 此时可在
data_ingestion.py中使用绝对导入:from src.exception import CustomException from src.logger import logging - 直接运行脚本或用任意方式启动均可。
方案三:VS Code配置额外路径
- 打开VS Code的
settings.json(快捷键Ctrl+,打开设置,搜索settings.json进入编辑),添加:"python.analysis.extraPaths": ["${workspaceFolder}"] - 该配置仅解决VS Code语法检查的红色警告,运行时仍需结合方案一或方案二确保Python能找到
src模块。
错误原因说明
- 直接运行
src/components/data_ingestion.py时,Python会将src/components视为顶层目录,sys.path中没有MLProjects,因此无法找到src模块。 - 相对导入
from ..exception要求文件作为包的一部分运行,不能直接以脚本形式启动,必须用python -m触发模块加载机制。
内容的提问来源于stack exchange,提问作者lasan13
相关产品推荐
相关产品推荐

