资讯动态

Trae 或 VSCode 无法识别相对路径?把工作目录改到 TaoToken 前先搞懂 Execute In File Dir

发布时间:2026/10/4 11:46:36 来源:尧图企业网站定制
1. 相对路径失效的真实场景与排查思路你打开 Trae 或者 VSCode只拖进来一个test.py代码里写着open(data/input.txt)点运行报错FileNotFoundError。你切到终端一看pwd显示的是用户主目录而不是脚本所在的文件夹。这不是你的代码写错了而是编辑器默认把「工作目录」设成了它自己启动时所在的目录而不是当前打开文件所在的目录。这个行为在 VSCode 系编辑器里是默认的Trae 基于 VSCode 内核修改同样继承了这个设定。PyCharm 之所以不出现这个问题是因为它默认就把运行配置的工作目录设成了脚本所在目录。所以从 PyCharm 迁过来的人第一次在 Trae 或 VSCode 里跑带相对路径的脚本几乎都会踩这个坑。核心概念只有一个工作目录cwd。进程启动时有一个当前工作目录所有相对路径都相对于它解析。编辑器点「运行」时如果没有额外配置cwd 往往是编辑器进程的 cwd而不是文件所在目录。Execute In File Dir这个设置就是让编辑器在运行当前文件时把 cwd 切换到文件所在目录。排查顺序建议这样走先确认是编辑器行为还是运行配置问题。打开一个最小脚本打印os.getcwd()看输出目录是不是脚本所在目录。如果不是再去改设置。如果改了设置还不对就要看launch.json里有没有显式覆盖 cwd。最后才考虑是不是终端本身没有跟随文件切换。我试过在 Trae 里打开一个子目录下的脚本终端 cwd 停在项目根目录脚本里的相对路径全部指向根目录导致读不到子目录里的配置文件。把Execute In File Dir勾上之后问题消失。下面把每一步拆开讲清楚。2. TaoToken 前置为什么先搞懂工作目录再改配置在动手改settings.json之前先把 TaoToken 的接入环境准备好。原因很直接你后面验证工作目录是否生效时大概率要跑一个调用模型接口的最小脚本而这个脚本里会用到相对路径读取配置或提示词文件。如果 cwd 不对脚本连配置文件都读不到你会误以为是 API Key 或 Base URL 写错了白白绕一圈。TaoToken 的官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。这两个地址先记下来后面配置里会用到。注意 API 地址不带 UTM 参数直接写https://taotoken.net/api就行。你需要准备三样东西Base URL、API Key、Model ID。Base URL 就是上面那个 API 地址API Key 在控制台的 API Keys 页面生成入口是 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite Model ID 根据你要用的模型填可以在模型对话页面确认入口是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。如果你打算长期做编码或 Agent 类任务可以了解 Coding Plan入口是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 遇到配置格式问题可以对照。为什么把 TaoToken 放在工作目录排查之前因为很多人的实际场景是写了一个脚本用相对路径读prompt.txt然后调用模型接口。脚本跑不起来第一反应是 API 配置错了其实是 cwd 不对导致prompt.txt没读到。先把工作目录搞对再去验证 API 连通性排查路径才清晰。这里给一个最小验证脚本的思路后面第 4 节会完整演示。脚本做两件事打印当前工作目录读取同目录下的一个文本文件。如果文件读不到说明 cwd 有问题如果读到了但接口报错才是 API 配置问题。这样把两类问题隔离开。3. 可复制配置settings.json、Execute In File Dir 与 launch.json这一节是重点给出可以直接复制的配置片段。分三层编辑器全局设置、运行配置、以及终端行为。第一层settings.json里的Execute In File Dir。在 Trae 或 VSCode 里按CtrlShiftPmacOS 是CmdShiftP输入Open User Settings (JSON)打开用户设置文件。加入下面这行{ python.terminal.executeInFileDir: true }这个设置的作用是当你在终端里运行 Python 文件时终端的工作目录切换到该文件所在目录。注意它只影响 Python 扩展在终端里的执行行为不影响调试器。如果你用的是 Code Runner 扩展它有自己的配置项。在settings.json里加{ code-runner.fileDirectoryAsCwd: true }这一项让 Code Runner 把文件所在目录作为 cwd。很多人装了 Code Runner 却不知道这个开关导致点右上角运行按钮时相对路径失效。第二层launch.json里的 cwd。调试F5走的是launch.json和上面两个设置是独立的。在项目根目录的.vscode/launch.json里配置{ version: 0.2.0, configurations: [ { name: Python: 当前文件, type: debugpy, request: launch, program: ${file}, console: integratedTerminal, cwd: ${fileDirname} } ] }关键在cwd: ${fileDirname}。${fileDirname}是 VSCode 的变量表示当前打开文件所在目录。这样调试时 cwd 就是脚本目录相对路径正常解析。如果你希望 cwd 固定在项目根目录改成cwd: ${workspaceFolder}。第三层终端本身的工作目录。VSCode 和 Trae 有一个设置控制新终端打开时的 cwd{ terminal.integrated.cwd: ${fileDirname} }这一项让新开的集成终端直接落在当前文件目录。注意它只影响新开的终端已经开着的终端不会自动切换。所以改完设置后关掉旧终端再开一个新的。把三层配置放在一起一个完整的settings.json片段长这样{ python.terminal.executeInFileDir: true, code-runner.fileDirectoryAsCwd: true, terminal.integrated.cwd: ${fileDirname} }launch.json单独放因为它是项目级配置路径在.vscode/launch.json。如果你用 Trae路径一样Trae 兼容 VSCode 的配置目录结构。这里要提醒一点Execute In File Dir在设置界面里的搜索关键词就是Execute In File Dir勾选后对应python.terminal.executeInFileDir。如果你在设置 UI 里搜不到说明 Python 扩展没装或没激活。先确认扩展装好再改 JSON。4. 验证请求用最小脚本确认工作目录是否生效配置改完必须验证。不要凭感觉用脚本打印实际 cwd。第一步建一个测试目录结构project/ sub/ test_cwd.py data.txtdata.txt里随便写一行内容比如hello cwd。第二步test_cwd.py内容import os print(当前工作目录:, os.getcwd()) print(脚本所在目录:, os.path.dirname(os.path.abspath(__file__))) with open(data.txt, r, encodingutf-8) as f: print(读取到:, f.read().strip())第三步在 Trae 或 VSCode 里只打开test_cwd.py不要打开整个project文件夹。点运行。如果配置生效输出应该是当前工作目录: /path/to/project/sub 脚本所在目录: /path/to/project/sub 读取到: hello cwd如果输出里 cwd 是用户主目录或别的路径且open(data.txt)报FileNotFoundError说明Execute In File Dir没生效。检查是不是改错了设置文件用户设置 vs 工作区设置或者 Python 扩展没装。第四步验证调试配置。按 F5如果launch.json里cwd设成了${fileDirname}输出应该和上面一致。如果报错说找不到launch.json按提示创建一个选 Python 调试配置然后把cwd那行加进去。第五步验证 API 调用场景。把test_cwd.py改成读同目录的prompt.txt然后调用 TaoToken 接口import os import json import urllib.request with open(prompt.txt, r, encodingutf-8) as f: prompt f.read().strip() payload { model: 你的Model ID, messages: [{role: user, content: prompt}] } req urllib.request.Request( https://taotoken.net/api/v1/chat/completions, datajson.dumps(payload).encode(utf-8), headers{ Content-Type: application/json, Authorization: Bearer 你的API Key } ) with urllib.request.urlopen(req) as resp: result json.loads(resp.read().decode(utf-8)) print(result[choices][0][message][content])这段脚本同时验证两件事相对路径prompt.txt能否读到以及 API 能否调通。如果prompt.txt读不到是 cwd 问题如果读到了但接口返回 401是 Key 问题如果返回模型不存在是 Model ID 问题。这样把问题分层定位。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth配置过程中会遇到几类典型报错逐个对照。401 Unauthorized。接口返回 401通常是 API Key 没带对或格式不对。检查Authorization头是不是Bearer加 Key中间有一个空格。Key 有没有多余空格或换行。如果 Key 是从控制台复制的确认没有复制到前后空白。还有一种情况是 Key 被删除或过期去 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 重新生成一个。local proxy failed。这个报错一般出现在你配置了本地代理或环境变量指向了不存在的地址。检查系统环境变量里有没有HTTP_PROXY、HTTPS_PROXY指向本地端口。如果有且那个端口没有服务在跑就会报这个。临时清掉这些环境变量再试。注意这里说的是本地环境变量排查不涉及任何网络工具配置。reading choices 报错。类似KeyError: choices或list index out of range说明返回的 JSON 里没有choices字段。先打印完整返回内容看结构。常见原因是接口地址写错了比如漏了/v1或者 Base URL 拼成了https://taotoken.net/api/v1/chat/completions之外的形式。确认地址是https://taotoken.net/api/v1/chat/completions。另外如果返回的是错误信息 JSON也会没有choices先看error字段。OAuth 相关报错。如果你在配置 Claude Code 或类似工具时看到 OAuth 报错检查是不是把认证方式搞混了。有些工具走 OAuth 流程有些走 API Key。TaoToken 的接入用 API Key 方式Base URL 填https://taotoken.net/api不需要走 OAuth。如果你在 Claude Code 里配置参考接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里的说明。CC Switch / Cline MCP / Codex auth.json 三件套。如果你用这些工具配置时三样都要写全Base URL、API Key、Model ID。缺一个都会报错。Base URL 用https://taotoken.net/apiKey 用控制台生成的Model ID 在模型对话页面确认。以 Codex 的auth.json为例结构大致是{ base_url: https://taotoken.net/api, api_key: 你的API Key, model: 你的Model ID }字段名以实际工具文档为准但三件套的逻辑不变。相对路径仍然失效。如果配置都改了还是不行检查是不是在设置 UI 里改了但没保存或者改的是工作区设置而当前打开的是单文件单文件模式下工作区设置不生效。单文件模式要用用户设置。另外Trae 和 VSCode 的设置是分开存储的你在 VSCode 里改了Trae 里不一定同步需要在 Trae 里再改一遍。6. 语义一致 CTA把工作目录和接入配置一起固化工作目录问题解决后建议把配置固化下来避免换项目或换编辑器时重新踩坑。用户设置里的Execute In File Dir和terminal.integrated.cwd是全局的一次配好长期有效。launch.json是项目级的可以在项目模板里放一份新项目直接复制.vscode目录。接入配置方面把 Base URL、API Key、Model ID 三件套写进项目的环境变量或配置文件不要硬编码在脚本里。这样换 Key 或换模型时只改一处。验证模型连通性可以用模型对话页面入口是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 直接在页面上发一条消息看返回比写脚本快。如果你要长期做编码或 Agent 任务Coding Plan 的入口是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 可以了解额度方案。API Key 管理在 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。最后给一个实用技巧在项目根目录放一个check_env.py每次换环境先跑它打印 cwd、检查配置文件是否存在、发一条最小请求验证 Key。三秒钟确认环境没问题再开始写业务代码。这个脚本本身也用相对路径读配置正好反过来验证 cwd 配置是否生效。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑