ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

VS Code插件Code Runner使用python虚拟环境:把settings.json改到TaoToken

VS Code插件Code Runner使用python虚拟环境:把settings.json改到TaoToken 1. 为什么 Code Runner 总是跑不到虚拟环境里VS Code 里装 Code Runner 的人多半都遇到过这个场景终端里pip install装好的包点右上角那个三角运行按钮结果报ModuleNotFoundError。切到终端手动python xxx.py又一切正常。问题不在包也不在 Python而在 Code Runner 默认调用的解释器路径。Code Runner 的执行逻辑很简单它读settings.json里的code-runner.executorMap按语言取一条命令模板然后把$pythonPath、$fullFileName这些变量替换掉丢给系统 shell 执行。关键在于$pythonPath这个变量——它默认取的是 VS Code 当前选中的解释器。听起来没问题但很多人只改了工作区的解释器没让 Code Runner 感知到或者命令模板里写死了python于是虚拟环境形同虚设。我试过在一个 Django 项目里踩这个坑.venv建好了CtrlShiftP也选了.venv/bin/python可 Code Runner 还是用全局 Python 跑django死活导不进来。后来把executorMap里的python改成显式引用$pythonPath问题当场消失。这篇要解决的不只是让 Code Runner 用上虚拟环境还要把运行链路接到统一的 Key 通道上。也就是说脚本跑起来之后里面调用的模型请求走的是同一套 Base URL 和 Key不用在每个项目里重复配环境变量。适合正在用 VS Code 写 Python、又想把模型调用统一管理的开发者。下面从settings.json的executorMap切入给出可复制的配置片段和一次完整的运行验证。2. 前置准备TaoToken 的 Key 与 Base URL 怎么拿在动settings.json之前先把请求通道准备好。TaoToken 的定位是给开发者提供统一的模型调用入口一个 Key 可以对接多种模型省得每个项目单独申请。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。拿 Key 的路径不复杂进控制台找到 API Keys 页面新建一个 Key复制出来。这个 Key 后面会写进环境变量不直接硬编码在脚本里。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite API Keys 页面是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。Base URL 统一用https://taotoken.net/api注意这个不带 UTM 参数是给代码里base_url字段用的。模型 ID 按你实际要调的填比如对话类、编码类各有对应的 ID具体在文档里查https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。这里有个容易混的点官网链接带 UTM 是为了统计来源代码里配置的 Base URL 不要带这些参数否则某些 SDK 解析会出问题。我一般把 Key 存到系统环境变量TAOTOKEN_API_KEYBase URL 存TAOTOKEN_BASE_URL脚本里用os.environ读。这样 Code Runner 跑的时候只要 shell 能读到环境变量请求就能走通。如果你用的是 Claude Code 这类工具做编码接入方式略有不同参考 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentClaudeCodeAnthropicutm_campaignrewrite 。但本篇聚焦 Code Runner 虚拟环境先把这条链路打通。3. 可复制的 settings.json 配置executorMap 与虚拟环境联动打开 VS Code 的settings.json。快捷键CtrlShiftP输入Preferences: Open User Settings (JSON)或者直接改工作区的.vscode/settings.json。工作区配置优先级更高团队协作时建议放工作区。核心是code-runner.executorMap里的python字段。原始 excerpt 给的是python: set PYTHONIOENCODINGutf8 $pythonPath -u $fullFileName这条在 Windows 上能用但set是 cmd 语法macOS/Linux 下会报错。跨平台更稳的写法是分开处理或者用python -u配合环境变量。下面给一份我实测可用的完整片段包含虚拟环境识别和统一 Key 通道{ code-runner.executorMap: { python: $pythonPath -u $fullFileName }, code-runner.runInTerminal: true, code-runner.clearPreviousOutput: true, code-runner.env: { PYTHONIOENCODING: utf8, TAOTOKEN_API_KEY: ${env:TAOTOKEN_API_KEY}, TAOTOKEN_BASE_URL: https://taotoken.net/api }, python.terminal.activateEnvironment: true }逐项说明。code-runner.executorMap.python用$pythonPath而不是写死python这是让 Code Runner 跟随 VS Code 当前解释器的关键。$pythonPath会被替换成你CtrlShiftP→Python: Select Interpreter选中的那个路径虚拟环境选中后就是.venv/bin/python或.venv\Scripts\python.exe。code-runner.runInTerminal设为true输出走集成终端虚拟环境激活状态能继承日志也好看。code-runner.env里注入TAOTOKEN_API_KEY和TAOTOKEN_BASE_URL这样脚本里os.environ[TAOTOKEN_BASE_URL]直接拿到统一入口不用每个文件写一遍。python.terminal.activateEnvironment保证终端启动时自动激活虚拟环境。这几项配合起来Code Runner 点运行 → 用虚拟环境解释器 → 脚本读到统一 Key → 请求走 TaoToken 通道。如果你用 Cline 或 MCP 类工具配置结构不同但 Base URL、Key、Model ID 三件套的逻辑一致。Codex 的auth.json也是同样思路把入口和凭证集中管理。这里不展开聚焦 Code Runner。配置改完记得保存Code Runner 会即时生效不用重启 VS Code。如果没生效检查是不是工作区配置覆盖了用户配置。4. 验证请求一次运行看结果配置好了写个最小脚本验证。新建test_env.pyimport os import sys print(解释器路径:, sys.executable) print(是否虚拟环境:, sys.prefix ! sys.base_prefix) print(Base URL:, os.environ.get(TAOTOKEN_BASE_URL)) print(Key 是否存在:, bool(os.environ.get(TAOTOKEN_API_KEY)))点 Code Runner 的运行按钮。预期输出里解释器路径应该指向.venv目录是否虚拟环境是TrueBase URL是https://taotoken.net/apiKey 是否存在是True。如果解释器路径还是全局 Python回到CtrlShiftP→Python: Select Interpreter手动选.venv下的解释器再跑一次。这一步是很多人漏掉的executorMap用了$pythonPath但$pythonPath的值来自当前选中的解释器没选对就白搭。再进一步验证模型请求能走通。装好 SDK 后写import os from openai import OpenAI client OpenAI( api_keyos.environ[TAOTOKEN_API_KEY], base_urlos.environ[TAOTOKEN_BASE_URL], ) resp client.chat.completions.create( model你的模型ID, messages[{role: user, content: 回复 ok}], ) print(resp.choices[0].message.content)Code Runner 跑这个脚本如果打印出模型回复说明虚拟环境、Key 通道、请求转发全链路通了。模型 ID 按文档填别照抄。这一步成功意味着你以后在这个项目里点运行都是虚拟环境 统一通道不用再手动source activate。想直接在网页上试模型对话可以用 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 快速确认 Key 和模型 ID 没问题再回到本地配。5. 常见报错排查401、ModuleNotFoundError 与解释器错位报错一ModuleNotFoundError: No module named xxx。这是最典型的虚拟环境没生效。先看 Code Runner 输出里的解释器路径如果不是.venv下的就是$pythonPath没取对。检查settings.json里executorMap.python是不是写死了python。另一个可能是包装在了全局虚拟环境里没装pip install时确认终端已激活.venv。报错二401 Unauthorized或invalid api key。Key 没读到或读错。在脚本里print(os.environ.get(TAOTOKEN_API_KEY))看是否为None。如果是None说明code-runner.env没注入成功或者系统环境变量没设。注意code-runner.env里用${env:TAOTOKEN_API_KEY}是引用系统变量系统里没设就是空。直接在系统里设或者把 Key 写进code-runner.env不推荐容易泄露。报错三local proxy failed或连接超时。Base URL 写错或者带了多余参数。确认是https://taotoken.net/api不带 UTM。有些 SDK 对 URL 结尾斜杠敏感统一不加尾斜杠。报错四reading choices相关解析错误。多半是模型 ID 填错返回结构不是预期的 chat completion 格式。去文档核对模型 ID别用猜测的名字。报错五OAuth 或认证流程卡住。如果你混用了 Claude Code 的认证方式注意它和 API Key 是两套。Code Runner 场景用 API Key 即可OAuth 那套是给特定工具用的别混。排查顺序建议先确认解释器路径 → 再确认环境变量 → 最后确认 Base URL 和模型 ID。大部分问题在前两步。6. 把统一通道用起来从单脚本到长期编码链路打通之后实际收益是每个 Python 项目点运行都自动走虚拟环境 统一 Key不用重复配。如果你经常写 Agent 类脚本、批量调模型可以考虑 Coding Plan把额度集中管理https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。日常调试模型输出网页端模型对话更快https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。需要新建或轮换 Key去 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。接入细节查文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。一个实用技巧把code-runner.executorMap的配置放进工作区.vscode/settings.json并提交到仓库团队里每个人拉下来点运行就是一致环境省掉我这能跑你那不能跑的扯皮。Key 走系统环境变量不进仓库。这样虚拟环境识别和请求转发两件事一次配好长期省心。
返回列表