VSCode中ModuleNotFoundError: No module named 'Stubs'问题排查与解决
问题原因及解决方法
可能原因
- Stubs目录未被识别为有效模块:Python默认仅将当前脚本所在目录、系统site-packages目录纳入模块搜索路径。若Stubs目录不在这些路径中,或缺少
__init__.py文件(Python3.3+虽支持命名空间包,但部分场景仍需该文件明确模块身份),会导致找不到模块。 - VSCode Python解释器配置错误:可能选中了非当前项目的Python环境,比如未激活虚拟环境,或解释器路径指向的环境未包含当前项目目录。
- VSCode工作目录设置不当:若工作目录不是项目根目录,Python会以工作目录为基准搜索模块,无法定位到Stubs目录。
解决方法
- 确认Stubs为合法模块
在Stubs目录下创建空的__init__.py文件(可选但推荐,可规避部分兼容问题)。 - 手动添加项目根目录到Python搜索路径
在profiler.py开头添加以下代码(根据实际目录层级调整):import sys from pathlib import Path # 若Stubs与profiler.py在同一父目录下,用该行 sys.path.append(str(Path(__file__).parent)) # 若Stubs在项目根目录,profiler.py在子目录,用该行 sys.path.append(str(Path(__file__).parent.parent)) - 配置正确的Python解释器
按Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),输入Python: Select Interpreter,选择当前项目对应的Python环境(如虚拟环境的解释器)。 - 调整VSCode工作目录
- 直接将项目根目录拖入VSCode打开,确保工作目录为项目根;
- 打开VSCode设置(
Ctrl+,),搜索python.terminal.executeInFileDir并勾选,让终端在脚本所在目录执行。
- 使用相对导入(适用于profiler与Stubs同层级场景)
将导入语句改为from .Stubs.aaa import a(开头的点代表当前目录),直接运行时需配合-m参数,比如python -m your_project.profiler(your_project为项目根目录名)。
内容的提问来源于stack exchange,提问作者user24111774
相关产品推荐
相关产品推荐

