首页 / 资讯中心 / 文章详情

在VScode中运行jupyter没有结果?把settings.json改到TaoToken排查

在VScode中运行jupyter没有结果?把settings.json改到TaoToken排查 ★ FEATURED ARTICLE
1. 先别急着重装VScode 里 Jupyter 跑完没结果八成卡在这三处你在 VScode 里写了一段生成数组的代码点运行输出区只冒出一行[Running] ...加个时间戳然后……就没有然后了。没有报错没有结果内核状态栏可能还显示「已连接」。这种静默失败最折磨人因为它不告诉你哪里错了。我先把结论放前面VScode 中 Jupyter Notebook 执行无输出、内核无响应绝大多数情况不是 VScode 本身坏了而是内核连接、网络出口、鉴权通道这三层里有一层断了。你要做的是把这三层逐一隔离而不是一上来就卸载重装 Python 插件。这篇面向的是这样一类人本地装了 VScode Jupyter 扩展能打开.ipynb能选中内核但点运行后要么一直转圈要么只回显执行时间没有结果要么内核直接「无响应」。如果你用的是远程内核、公司网络、或者把模型 API 走统一通道那排查路径会更清晰。核心检索词先明确VScode Jupyter 执行无输出排查本质是「内核有没有真的收到代码、执行结果有没有真的回传」。围绕这个我会从settings.json和内核连接配置切入把 endpoint 统一改到 TaoToken 的 Key/API 通道给你可复制的配置片段和逐步验证动作最后对照真实报错定位到底是内核、网络还是鉴权的问题。先说一个我踩过的坑有次我以为是内核挂了折腾半小时重装 ipykernel结果发现是settings.json里一个jupyter.jupyterServerType的值写错导致 VScode 连的是一个根本不存在的本地 server。所以第一步永远是看配置不是看代码。下面按「原问题场景 → TaoToken 前置 → 可复制配置 → 验证请求 → 常见错排查 → 接入入口」的顺序走。你可以跳着看但建议至少把第 3 节的配置片段完整抄一遍因为静默失败往往就藏在某个键值里。2. TaoToken 前置为什么把 Jupyter 的 API 通道统一到一处能救你在讲配置之前得先解释清楚「把 endpoint 改到 TaoToken」到底改的是什么不然你抄了配置也不知道在干嘛。VScode 的 Jupyter 扩展本身负责的是「编辑器 ↔ 内核」的通信它不直接管模型 API。但当你用 Jupyter 做 AI 相关开发——比如在 notebook 里调大模型、跑 Agent、做 RAG 实验——你的代码里会有一堆base_url、api_key、model的配置。这些配置散落在各个 cell、各个.env、各个 SDK 初始化里一旦某个 key 过期、某个 endpoint 写错表现就是「代码跑了但没结果」因为请求根本没发出去或者被静默拒绝。TaoToken 在这里的角色是统一的 Key/API 通道你不再为每个模型、每个工具单独配一套鉴权和地址而是把base_url指向同一个入口用同一把 Key 管理调用。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 这个不加 UTM。为什么这能帮到「Jupyter 无输出」因为静默失败的一大来源就是鉴权失败被吞掉。很多 SDK 在 401 的时候不会抛异常到 notebook 输出区而是返回一个空对象或者卡在重试。你把通道统一之后鉴权问题会集中暴露在一个地方排查范围立刻缩小。具体到操作层面你需要准备三样东西我称之为「三件套」Base URL统一指向 TaoToken 的 API 入口形如https://taotoken.net/api具体路径以文档为准。API Key在控制台生成形如sk-...这是你所有调用的通行证。Model ID你要调用的模型标识比如某个具体的模型名写错会导致「找不到模型」类错误。这三件套不仅用在 Jupyter 的代码里也用在 VScode 的settings.json里如果你通过扩展配置走统一通道。很多人只改了代码里的base_url忘了改扩展层的配置结果扩展还在往旧地址发心跳表现就是内核「假连接」。注意TaoToken 是 API 通道不是让你绕过任何本地环境。你的 Python、ipykernel、Jupyter 扩展该装还得装它解决的是「调用往哪走、用哪把钥匙」的问题。拿到三件套之后先别急着写进 notebook。我建议你先用最笨的办法验证通道是通的开一个终端用curl打一次 API。这一步能过后面 90% 的静默失败都能排除。具体命令在第 4 节。另外提醒一句控制台里生成的 Key 要立刻复制保存很多平台只显示一次。如果你在 Jupyter 里反复 401先回去确认 Key 有没有复制错、有没有多余空格。这个低级错误我见过太多次。3. 可复制配置settings.json 与内核连接怎么改到 TaoToken这一节是全文最该动手的部分。我会给你两份可复制的配置一份是 VScode 的settings.json一份是 notebook 里初始化客户端的 Python 片段。两份配合使用才能把「编辑器层」和「代码层」的通道都统一。先找到你的settings.json。在 VScode 里按CtrlShiftPmacOS 是CmdShiftP输入Preferences: Open User Settings (JSON)回车。这就是用户级配置文件。如果你只想对当前项目生效就在项目根目录建.vscode/settings.json。下面是一份可直接抄的片段重点在 Jupyter 相关键值和统一通道的环境变量注入{ jupyter.jupyterServerType: local, jupyter.askForKernelRestart: false, jupyter.interactiveWindow.textEditor.executeSelection: true, jupyter.runStartupCommands: [ import os, os.environ[OPENAI_BASE_URL] https://taotoken.net/api, os.environ[OPENAI_API_KEY] sk-你的Key ], python.envFile: ${workspaceFolder}/.env, terminal.integrated.env.linux: { OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: sk-你的Key }, terminal.integrated.env.osx: { OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: sk-你的Key }, terminal.integrated.env.windows: { OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: sk-你的Key } }几个键值必须解释清楚不然你抄了也不知道为什么jupyter.jupyterServerType设为local意思是让 VScode 用本地内核。如果你之前设成了remote或者别的值而远程 server 又连不上表现就是内核无响应。这是静默失败的高频原因。jupyter.runStartupCommands是每次内核启动时自动执行的命令。我把环境变量注入放在这里好处是每个新内核都自动带上统一通道配置不用在每个 notebook 里重复写。注意这里是字符串数组每条命令一个元素。terminal.integrated.env.*是给集成终端注入环境变量。为什么三个平台都写因为 VScode 的配置是跨平台的你写全了换电脑不用改。Windows 用户注意路径分隔符和引号转义JSON 里反斜杠要写成\\。如果你不想把 Key 明文写在settings.json里强烈建议不要就用python.envFile指向一个.env文件然后在.env里写OPENAI_BASE_URLhttps://taotoken.net/api OPENAI_API_KEYsk-你的Key记得把.env加进.gitignore别把 Key 提交上去。这是基本安全习惯。配置改完必须重启 VScode 窗口Developer: Reload Window否则settings.json的改动不会完全生效。很多人改完直接点运行发现没变化就是因为没重载。接下来是 notebook 里的代码层配置。如果你用的是 OpenAI 兼容的 SDK初始化长这样import os from openai import OpenAI client OpenAI( base_urlos.environ.get(OPENAI_BASE_URL, https://taotoken.net/api), api_keyos.environ.get(OPENAI_API_KEY), ) resp client.chat.completions.create( model你的ModelID, messages[{role: user, content: 用一句话说明数组是什么}], ) print(resp.choices[0].message.content)注意model参数必须填你在 TaoToken 控制台看到的真实 Model ID写错会报「model not found」而不是静默失败——这反而是好事至少它告诉你错了。如果你用的是 Claude Code 或 Anthropic 风格的调用配置思路一样只是 SDK 初始化参数名不同。核心永远是三件套Base URL、Key、Model ID。提示settings.json里同时出现runStartupCommands和.env时环境变量可能被覆盖。建议二选一或者确保两处值一致。我一般用.env因为好管理、好轮换。配置写到这里编辑器层和代码层的通道就都指向 TaoToken 了。下一步是验证它真的通了。4. 验证请求从 curl 到 notebook逐步确认结果真的回来了配置抄完不代表通了。静默失败最坑的地方就是「看起来配好了」。所以这一节给你一套从底层到上层的验证动作每一步都有明确的成功标志。第一步终端 curl 验证通道。打开 VScode 集成终端执行curl -sS https://taotoken.net/api/v1/models \ -H Authorization: Bearer sk-你的Key \ -H Content-Type: application/json成功的话你会看到一串 JSON里面列出可用模型。如果返回 401说明 Key 错了或没带上如果返回 404说明路径不对回去看文档确认 API 路径如果卡住不动说明网络出口有问题。这一步是整个排查的地基curl 不通notebook 里一定不通。第二步Python 层验证。在终端里直接跑python -c import os from openai import OpenAI c OpenAI(base_urlhttps://taotoken.net/api, api_keysk-你的Key) r c.chat.completions.create(model你的ModelID, messages[{role:user,content:ping}]) print(r.choices[0].message.content) 这一步过了说明 Python 环境和 SDK 都没问题。如果这里报ModuleNotFoundError先pip install openai如果报连接超时回到第一步查网络。第三步notebook 内核验证。新建一个.ipynb选好内核在第一个 cell 里跑import sys, os print(sys.executable) print(os.environ.get(OPENAI_BASE_URL)) print(os.environ.get(OPENAI_API_KEY, 未设置)[:8])成功标志打印出 Python 解释器路径、正确的 Base URL、Key 的前 8 位。如果OPENAI_BASE_URL是None说明settings.json的runStartupCommands没生效回去检查 JSON 语法VScode 会在问题面板提示。第四步完整调用验证。在第二个 cell 里跑第 3 节那段client.chat.completions.create。成功的话print会输出模型回复。如果这里没输出但也没报错检查是不是忘了print——很多人把结果赋给变量就以为会显示notebook 只自动显示最后一个表达式的值赋值语句不显示。第五步确认内核状态。看 VScode 右上角的内核选择器应该显示你选的内核名旁边没有转圈图标。点一下内核名能看到「Restart」「Interrupt」等选项说明连接正常。如果显示「无响应」直接 Restart Kernel 再跑。这套流程走完你就能明确知道断点在哪一层。我实测下来大部分人的问题卡在第一步或第三步要么 Key 没配对要么环境变量没注入进内核。注意notebook 内核有缓存。改完settings.json后光重载窗口不够还要Restart Kernel否则旧内核还在用旧环境变量。这是「改了配置没效果」的头号原因。验证通过后你原来那段「生成数组没结果」的代码应该就能正常输出了。如果还是不行进入下一节对照报错。5. 常见错排查401、local proxy failed、reading choices、OAuth 逐个拆静默失败之所以难查是因为错误被吞了。这一节把最常见的几类真实报错和它们的伪装形态列出来你对号入座。401 Unauthorized。最直白也最常见。表现可能是 notebook 里返回空、或者 SDK 抛AuthenticationError。原因无非三个Key 写错、Key 过期、Key 没带上。检查settings.json和.env里的 Key 是否一致注意有没有多余空格或换行。如果你在runStartupCommands里写 Key确认字符串引号没写错。401 在 curl 阶段就能暴露所以第一步验证别跳过。local proxy failed / connection refused。这个报错通常出现在内核启动阶段VScode 提示「Failed to start kernel」或「local proxy failed」。它和网络代理配置有关但注意——我们这里说的是本地环境变量里的代理设置不是任何绕过网络的手段。检查你的系统环境变量里有没有残留的HTTP_PROXY、HTTPS_PROXY它们可能指向一个已经关掉的本地端口。在终端里echo $HTTPS_PROXY看看如果有值且你不需要就在settings.json的terminal.integrated.env.*里显式设为空字符串覆盖掉。reading choices 相关报错。形如KeyError: choices或AttributeError: NoneType object has no attribute choices。这说明 API 返回的对象结构和你预期的不一样通常是请求根本没成功SDK 返回了None或错误结构你的代码却直接去取resp.choices。修法先打印完整resp看它到底是什么。十有八九是鉴权或 Model ID 的问题回到第 4 节重验。OAuth 相关报错。如果你用的是 Claude Code 或某些需要 OAuth 的工具链可能遇到 token 刷新失败。这类问题的特征是「第一次能用过一会儿就不行」。检查你的凭据有没有过期重新走一遍授权流程。如果你把通道统一到 TaoToken鉴权就集中在一把 Key 上不用同时维护 OAuth token 和 API Key 两套东西这类问题会少很多。内核无响应但无报错。这是最像「玄学」的一种。表现是 cell 左边显示[*]一直不变成数字。可能原因代码里有死循环、内核真的挂了、或者请求在等一个永远不返回的响应。先点 Interrupt不行就 Restart Kernel。如果重启后同样的 cell 还是卡把代码拆小逐步定位是哪一行卡住。如果是 API 调用卡住多半是网络出口问题回到 curl 验证。改了 settings.json 没生效。前面提过这里再强调改完必须Developer: Reload WindowRestart Kernel。另外检查你是不是改错了文件——用户级settings.json和项目级.vscode/settings.json可能同时存在项目级优先级更高。用CtrlShiftP输入Preferences: Open Workspace Settings (JSON)看看项目级有没有覆盖。Model ID 写错。报错通常是model not found或invalid model。这个不静默但很多人忽略。去 TaoToken 控制台复制准确的 Model ID别凭记忆写。把这几类对照完你基本能定位到具体是哪一层。记住排查顺序永远是curl 通道 → Python 环境 → 内核环境变量 → 代码逻辑。从下往上查别跳步。6. 接入入口与长期用法把统一通道固化进你的工作流排查完这一次更重要的是别让同样的问题再发生。我的做法是把统一通道固化进日常配置这样新项目、新 notebook 开箱即用。具体来说把第 3 节的settings.json片段作为你的用户级配置模板Key 放.env每个新项目复制一份.env.example改改就行。这样你永远只有一处需要维护 Key轮换的时候改一个文件所有 notebook 自动生效。如果你长期在 VScode 里做编码和 Agent 开发可以考虑用 Coding Plan 把调用额度集中管理入口在 https://taotoken.net/api API 入口不加 UTM。需要生成或轮换 Key 的时候去控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。想先验证模型对话效果可以用模型对话页https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 路径和参数以文档为准。API Keys 管理页https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后给你一个实用技巧在 notebook 第一个 cell 固定放一段「环境自检」代码每次开新 notebook 先跑它打印 Base URL、Key 前缀、Model ID、Python 路径。这样一旦哪天又出现无输出你一眼就能看出是环境变量丢了还是 Key 过期了不用再从头排查。回到你最初那段生成数组的代码——配置改对、内核重启、环境变量注入之后它应该正常输出结果了。如果还有问题按第 5 节的报错对照表逐个排除重点先看 curl 那一步通不通。通道通了剩下的都是小问题。
阅读完成 · 觉得有帮助?
咨询建站