VS Code运行Python程序报路径错误无法调试 直接运行可正常执行
问题原因
该报错是不同运行场景下工作目录不一致导致的:
- VS Code运行代码时,默认以你打开的项目根文件夹作为工作目录,若你的Python脚本存放在根目录下的
cps子文件夹内,直接写相对路径resources/icon/CPS.ico时,VS Code会尝试从根目录下找资源,自然找不到;加上cps/前缀后路径匹配,所以仅在VS Code中生效 - 直接双击运行Python脚本时,工作目录就是脚本本身所在的
cps文件夹,直接写resources/icon/CPS.ico即可匹配到正确路径,加cps/前缀反而会指向不存在的目录,因此运行失效
解决方案
不要使用硬编码的相对路径,改为基于当前脚本所在目录拼接绝对路径即可,修改步骤如下:
- 在导入模块后的代码开头,新增一行代码获取脚本所在的根目录:
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
- 将代码中所有的资源路径(包括图片、音频、
history.txt、HS.duffy等文件路径),都改为和BASE_DIR拼接的形式,示例:
# 原写法 root.iconbitmap("resources/icon/CPS.ico") sloth = ImageTk.PhotoImage(file="resources/animals/sloth.png") mixer.music.load("resources/music/dj.mp3") if os.path.isfile('history.txt'): # 修改后的写法 root.iconbitmap(os.path.join(BASE_DIR, "resources/icon/CPS.ico")) sloth = ImageTk.PhotoImage(file=os.path.join(BASE_DIR, "resources/animals/sloth.png")) mixer.music.load(os.path.join(BASE_DIR, "resources/music/dj.mp3")) if os.path.isfile(os.path.join(BASE_DIR, 'history.txt')):
所有路径都按上述规则修改后,两种运行场景下都会自动基于脚本所在目录查找资源,不会再出现路径找不到的问题。
内容的提问来源于stack exchange,提问作者Duffy
相关产品推荐
相关产品推荐

