You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置VSCode的Code Runner以识别自定义Python模块?

解决VS Code中Code Runner无法识别自定义Python模块的问题

问题背景

我正在开发Python与C混合的项目,选用VS Code作为主力工具。当前工作目录结构如下:

-workspace
 |-modules
 | |-__init__.py
 | |-custom.py
 |-test
   |-test.py

测试代码test/test.py:

import sys
#import modules.custom

if __name__ == "__main__":
    print(sys.path)
    for path in sys.path:
        print(path)

已配置好conda环境、VS Code的Python解释器路径及pythonpath环境变量,VS Code自带的F5调试运行正常,sys.path包含工作区根目录/mnt/e/workspace/;但使用Code Runner运行时,sys.path中缺少该根目录,导致无法导入自定义模块modules.custom。

已尝试的操作:

  • 将Code Runner配置为在终端运行(原输出窗口无法正常显示打印内容)
  • 在终端激活了conda环境,Code Runner能识别正确的Python解释器,但仍无法加载工作区目录

解决方案

方法1:修改Code Runner的Python执行命令

打开VS Code设置(快捷键Ctrl+,),搜索Code Runner: Executor Map,点击「编辑 in settings.json」,找到python对应的命令,修改为:

"python": "cd $workspaceRoot && python $fullFileName"

若需指定conda环境,可调整为:

"python": "source activate 你的环境名 && cd $workspaceRoot && python $fullFileName"

运行时会先切换到工作区根目录再执行脚本,此时sys.path会自动包含该根目录,即可识别modules模块。

方法2:在脚本中动态添加工作区路径

若不想修改全局配置,可在test.py开头添加代码手动注入路径:

import sys
import os
# 获取工作区根目录(基于test.py的位置向上回溯一级)
workspace_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if workspace_root not in sys.path:
    sys.path.append(workspace_root)

import modules.custom

if __name__ == "__main__":
    print(sys.path)
    for path in sys.path:
        print(path)

该方法不依赖Code Runner配置,适配多项目场景。

方法3:设置Code Runner的工作目录为项目根目录

在settings.json中添加配置:

"code-runner.cwd": "${workspaceRoot}"

此配置会将Code Runner的运行工作目录设为项目根目录,脚本执行时sys.path自动包含该目录,从而识别自定义模块。

关于终端运行的疑问

将Code Runner配置为终端运行不会引发问题,反而能更好地支持环境变量与交互式操作,问题根源是Code Runner默认工作目录并非项目根目录,导致sys.path缺少必要路径。

内容的提问来源于stack exchange,提问作者Forzzig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:43:22