VS Code中使用../相对路径访问文件报FileNotFound错误如何解决
VS Code下Python相对路径报FileNotFound的解决方法
问题本质
这个报错和../、./的路径语法没有关系,核心原因是不同编辑器运行Python脚本时的当前工作目录(CWD) 规则不一样:
- IDLE运行脚本时,默认将脚本文件自身所在的文件夹设为工作目录,所有相对路径都以这个文件夹为起点解析,所以你写的
./images/ui/logo.png能正常找到文件 - VS Code默认将你当前打开的工作区根目录(侧边栏资源管理器显示的最顶层文件夹)作为程序运行的工作目录,如果你的脚本存放在工作区的子文件夹里,相对路径的解析起点就和IDLE不一致,自然会触发找不到文件的错误。
可行解决方案
1. 锚定脚本目录写路径(最推荐,全环境兼容)
不要依赖运行环境的默认工作目录,直接以当前脚本文件的位置为起点拼接资源路径,不管在哪个编辑器、哪个目录下启动脚本都不会出错。
示例代码:
import os import pygame # 先拿到当前脚本所在文件夹的绝对路径 SCRIPT_FOLDER = os.path.dirname(os.path.abspath(__file__)) # 拼接logo路径,对应原写法里的./images/ui/logo.png icon_path = os.path.join(SCRIPT_FOLDER, "images", "ui", "logo.png") pygame.display.set_icon(pygame.image.load(icon_path))
如果要访问脚本所在目录之外的上级文件夹,直接在路径里加层级即可,对应原问题里../images/image.png的写法:
outer_img_path = os.path.join(SCRIPT_FOLDER, "..", "images", "image.png") # 可选:把带../的路径转成规范的绝对路径,避免特殊场景下的解析问题 outer_img_path = os.path.normpath(outer_img_path)
2. 修改VS Code运行配置,对齐IDLE的工作目录规则
如果不想改动原有代码,可以调整VS Code的启动配置,让它和IDLE一样把脚本所在文件夹设为工作目录:
- 打开左侧「运行和调试」面板,点击「创建launch.json文件」,选择对应的Python解释器
- 在生成的配置项中新增
"cwd": "${fileDirname}"字段,参考配置如下:
{ "version": "0.2.0", "configurations": [ { "name": "Python: 运行当前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${fileDirname}" } ] }
保存配置后,再通过VS Code的运行、调试按钮启动脚本,相对路径的解析逻辑就和IDLE完全一致。
3. 临时调整工作区层级
如果只是临时运行脚本不想改配置,可以直接通过VS Code的「文件-打开文件夹」功能,选中脚本所在的文件夹作为工作区根目录,此时默认工作目录就是脚本所在位置,原有相对路径可以直接生效。
注意:单纯依赖相对路径做资源定位的写法兼容性很差,除了编辑器差异,从命令行其他目录启动脚本、打包成exe后都可能出现路径错误,优先使用第一种锚定脚本目录的写法。
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

