
VSCode 导入库失败十有八九不是库没装而是编辑器用错了 Python 解释器代码能正常打开一按运行就抛 ModuleNotFoundError终端里还常常跟着一句「不是内部或外部命令也不是可运行的程序」。这类情况在 Windows 和 Kali 上表现不一样根子却是同一条。先在 TaoTokenhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_end注册并创建一把 API Key再把 Codex 的 Base URL 填成 https://taotoken.net/api让它读你的 .py 文件、VSCode 设置和终端报错逐项核对解释器路径、PATH 和 venv 到底有没有被选中。TaoToken 在这里只提供 Key 和统一的 Base URLPython 和 VSCode 自身的问题仍然要回到编辑器里去改它不会替你装库也不会替你点选解释器。1. 先看清楚 VSCode 用的到底是哪个 python.exe1.1 同一个 ModuleNotFoundError在 Windows 和 Kali 上长得不一样Windows 上最常见的样子是脚本里写了import requestsF5 一跑底部终端刷出ModuleNotFoundError: No module named requests你转头在终端敲pip install requests提示Requirement already satisfied于是整个人卡住。原因很简单pip 把包装进了 A 解释器VSCode 运行脚本时用的是 B 解释器两边根本不是同一个 Python。Kali 上的报错长得更「系统化」一些可能是/usr/bin/python3: No module named requests也可能直接是zsh: command not found: python。Kali 默认没有python这个命令名只有python3很多从 Windows 过来的同学习惯性写python xxx.py第一步就断了。再加上 Debian 系从 PEP 668 开始会拦pip install报externally-managed-environment新手很容易误判成「Kali 装不了库」。这两种表现指向同一件事你要先确认「VSCode 把哪个可执行文件当成 Python」而不是急着反复pip install。这个问题不确认装十遍库也没用。1.2 三个必须先抄下来的信息排查前先收集证据别凭记忆。建议把下面三样东西复制到一个临时 txt 里后面无论是自己看还是丢给 Codex 分析都用得上。第一样是 VSCode 当前选中的解释器路径。快捷键CtrlShiftP输入Python: Select Interpreter面板里会列出候选当前生效的那条前面有对勾也可以看窗口右下角状态栏鼠标悬停会显示完整路径。第二样是终端里的解释器路径。Windows PowerShell 用where.exe pythonKali 用which python python3再把python -V或python3 -V的输出版本一起记下来。第三样是报错原文一定是完整那一段包括最后一行。很多人只截第一行ModuleNotFoundError把真正有用的File ...调用栈丢了。调用栈里会写清楚是哪个文件、哪一行触发的导入这对判断「是脚本自己的问题还是环境的问题」非常关键。2. Windows 装 Python、Kali 装 python3-venv原文那几步照做PATH 要盯紧2.1 Windows 安装包上的勾选项决定了后面所有报错Windows 装 Python 时安装向导第一屏底部有个Add python.exe to PATH的勾勾上它后面能省掉一大半「不是内部或外部命令」。如果当时没勾也不用重装重新跑一遍安装包选 Modify 补勾即可或者手动把安装目录和Scripts目录加进系统环境变量 Path。安装路径尽量别放带空格和中文的目录C:\Python312或者D:\dev\Python312都比C:\Program Files\...省心。装完之后验证一下打开新的 PowerShell执行py -0p这个命令会把机器上所有已注册的 Python 解释器连路径一起列出来。如果py -0p能列出好几条说明你机器上确实存在多个 Python之前那个「装了这个解释器、跑的是另一个」的怀疑基本就坐实了。顺带记住一条Windows 上py是启动器python是具体命令两者不一定指向同一个解释器排查时优先信where.exe python的输出。2.2 Kali 上别急着 sudo pip先把 python3-venv 补齐Kali 装 Python 相关工具一条命令足够sudo apt update sudo apt install -y python3 python3-pip python3-venvpython3-venv这个包经常被漏掉漏了之后python3 -m venv .venv会报ensurepip is not available你以为是 Python 坏了其实就是缺个小包。如果要用一些全局命令行工具优先用pipx install 工具名它会把工具装进独立环境并自动挂到 PATH比sudo pip干净得多。在 Kali 上跑pip install看到externally-managed-environment时不要用--break-system-packages硬顶那是把系统 Python 当试验场。正确做法是把依赖装进 venvvenv 里的 pip 不会被这条限制拦。2.3 pip 镜像与「权限不足」到底是谁的问题国内网络环境下pip 默认源慢配个镜像顺手也值得。Windows 的配置文件在%APPDATA%\pip\pip.iniKali 在~/.config/pip/pip.conf或/etc/pip.conf内容格式一致[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cn timeout 60配完执行pip config list能看到生效值。至于Permission denied或Defaulting to user installation这类提示本质是当前用户没权限往系统 site-packages 写。Kali 上不要用sudo pip解决Windows 上不要用管理员 PowerShell 解决这两种做法都会把依赖装到 venv 外面反而制造出下一个「解释器选错」的坑。正确姿势是激活 venv 之后再装装到项目自己的目录里。3. VSCode 插件和 settings.json把解释器钉死在某个 venv 上3.1 插件装哪几个就够Python 扩展Microsoft 官方那个扩展 ID 是ms-python.python必装它带来解释器选择、运行、调试、终端自动激活这一整套能力。Pylance 一般会作为依赖自动装上负责补全和类型提示。写网安脚本经常要处理 JSON、YAML、十六进制数据可以再加一个 YAML 扩展其他花哨的插件先别堆插件越多越容易互相干扰。装完之后按CtrlShiftP执行Developer: Reload Window让扩展完整加载。这一步很多人跳过结果选择解释器的命令面板项都搜不到。3.2 命令面板选解释器一次性选中不等于长期生效Python: Select Interpreter选完之后VSCode 会在当前工作区记住这个选择但记住的粒度是「工作区」不是全局。你用「打开文件夹」的方式打开项目它就存在这个文件夹的.vscode/settings.json或工作区存储里你用「打开单个文件」的方式打开一个 .py它可能只是临时生效关掉再开又变回默认解释器。所以真正稳妥的做法是用文件夹方式打开项目然后在项目根目录建.vscode/settings.json把解释器路径写死。这样不管换机器、换终端、换 shell只要文件夹结构一样选中的就是同一个解释器。3.3 .vscode/settings.json 在两平台该怎么写Windows 项目的 venv 目录结构是.venv\Scripts\python.exeKali 是.venv/bin/python这是两平台最容易被忽略的差异写错一个分隔符或目录名VSCode 就退回默认解释器。Windows 工作区{ python.defaultInterpreterPath: ${workspaceFolder}\\.venv\\Scripts\\python.exe, python.terminal.activateEnvironment: true, python.analysis.extraPaths: [${workspaceFolder}] }Kali 工作区{ python.defaultInterpreterPath: ${workspaceFolder}/.venv/bin/python, python.terminal.activateEnvironment: true, python.analysis.extraPaths: [${workspaceFolder}] }python.terminal.activateEnvironment打开后新开的集成终端会自动激活 venvpip install和python xxx.py用的就是同一个环境。值得注意的是这个设置只对新开的终端生效已经开着的那个终端还留着旧的环境变量改完设置记得把终端面板整个关掉重开。4. venv 建了但没激活等于没建两平台命令与终端验证4.1 Windows 上建 venv 并激活在项目根目录打开 PowerShellpy -3 -m venv .venv .\.venv\Scripts\Activate.ps1 python -V where.exe python如果第二条报「因为在此系统上禁止运行脚本」那是 PowerShell 的执行策略问题用Set-ExecutionPolicy -Scope CurrentUser RemoteSigned放开当前用户即可不需要管理员权限。激活成功后提示符前面会出现(.venv)where.exe python的第一行应该是项目下的.venv\Scripts\python.exe如果第一行还是C:\Users\...\AppData\Local\Programs\Python\...说明激活没成功或者 PATH 里系统解释器排在前面。4.2 Kali 上建 venv 并激活cd ~/sec-scripts python3 -m venv .venv source .venv/bin/activate python -V which python激活后which python应该输出/home/你的用户名/sec-scripts/.venv/bin/python。注意 Kali 上很多教程还在用python这个命令名如果 venv 激活了仍然command not found用python3再试一次venv 内部一般会同时提供python和python3两个软链但有些镜像的配置不完整以which python3为准更保险。4.3 一张对照表把平台差异说清楚检查点WindowsPowerShellKalibash/zsh创建环境py -3 -m venv .venvpython3 -m venv .venv激活.\.venv\Scripts\Activate.ps1source .venv/bin/activate退出deactivatedeactivate解释器位置.venv\Scripts\python.exe.venv/bin/python查询路径where.exe pythonwhich python python3装依赖.venv激活后直接pip install 包名同左不要加 sudo这张表建议直接贴在项目 README 里。双平台搭环境的项目最常见的翻车点不是命令不会敲而是「在这台机器上激活了在另一台机器上忘了激活然后开始怀疑代码」。5. 把 Codex 接到 TaoToken让它读 .py、settings.json 和报错5.1 先拿 Key注册、建 Key、记模型 ID打开 TaoToken 注册账号进控制台创建一把 API Key复制出来先用占位符代替别直接贴进聊天记录里。同一页顺手看看模型广场确认当前可用的模型 ID 是什么先抄下来等会儿要填进配置文件。记住一点官网页面和接口地址是两回事注册、创建 Key、看模型列表、看用量都在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 上做而填进工具里的 Base URL 是另一个地址下面会写。Key 不需要每个项目新建一把同一把 Key 可以给多个工具共用方便后面统计用量。如果确实要区分项目建 Key 的时候把备注写清楚一周之后你还能认出来哪把是哪把。5.2 ~/.codex/config.toml 里把 base_url 指向 TaoTokenCodex 的配置文件在用户目录下的.codex/config.toml。Windows 上是C:\Users\你的用户名\.codex\config.tomlKali 上是~/.codex/config.toml文件不存在就自己新建。model YOUR_MODEL_ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chatmodel填模型 ID以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 上模型广场当时的列表为准不要凭印象写一个记得见过的名字。base_url就是https://taotoken.net/api末尾不要加/v1这一点后面排障还会再提一次。Key 通过环境变量传进去不写进配置文件export TAOTOKEN_API_KEYYOUR_API_KEY$env:TAOTOKEN_API_KEYYOUR_API_KEY上面两行只对当前会话生效Kali 想永久生效可以写进~/.bashrcWindows 想要永久生效就在系统环境变量里新建一条。Key 始终用YOUR_API_KEY占位真实 Key 从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的控制台里创建和复制。5.3 让 Codex 排查但命令必须你自己在本地敲这是整个流程里最需要说清楚的一点。Codex 不能连上你的 Windows 笔记本或者 Kali 虚拟机它看不到你的文件系统也不会替你去点 VSCode 的下拉框。它能做的是读你贴过去的.py内容、.vscode/settings.json内容、终端报错原文然后告诉你问题出在哪一类、应该改哪一行。一个可用的提示词模板我在 VSCode 里运行 Python 脚本报错了报错原文、settings.json 内容、终端路径查询结果都在下面。 请只做三件事 1) 判断这属于哪一类问题库没装 / 装到了别的解释器 / PATH 顺序不对 / venv 没激活 / 终端没重开。 2) 按可能性从高到低给修改建议并指出应该改 settings.json 里的哪一行。 3) 给我一串需要我自己在本地终端执行的验证命令并说明每条命令的期望输出是什么。 所有命令我自己执行你只负责解释和给建议不要假设你能访问我的机器。 【报错原文】 粘贴完整调用栈 【.vscode/settings.json】 粘贴内容 【终端输出】 where.exe python / which python python3 的原始输出这个模板的好处是把「执行」和「判断」分开了。你负责采数据、执行命令Codex 负责归因和给方向。网上那些「让 AI 直连你的环境去跑命令」的说法在真实项目里既不安全也不稳定尤其是你手上这台机器可能同时挂着公司内网和一堆配置文件。6. 发一次请求确认通了再回 VSCode 改解释器6.1 一次最小验证就够了配置写完后先别急着排查具体的库。用一条最简单的提问确认链路通不通比如在 Codex 里问我的 VSCode 里 python.defaultInterpreterPath 指向 .venv\Scripts\python.exe 但终端 where.exe python 的第一行输出是 C:\Users\me\AppData\Local\Programs\Python\Python312\python.exe。 这两者不一致会导致什么现象我该以哪一个为准如果它能返回一段有条理的分析说明 Key、base_url、模型 ID 三件套都对了接下来所有排查都可以在同一个会话里继续。如果这条都发不出去先解决连接问题别往下走——环境没通的时候Codex 给的建议再多也没法验证。6.2 常见的三类连接报错对照着改现象大概率原因处理方式401 UnauthorizedKey 复制时带空格或环境变量没生效重新从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 复制确认TAOTOKEN_API_KEY在当前会话里能 echo 出来404 / Not Foundbase_url 末尾多了/v1或者把官网页面地址填进了 base_urlbase_url 固定写https://taotoken.net/api官网地址只用来注册和建 Key提示模型不存在模型 ID 是凭记忆写的回模型广场看当时的可用列表重新填model这三类错误有个共同点都不是 Codex 的问题也不是 Python 的问题纯粹是配置字符串填错。排查顺序上先确认这三项再去怀疑脚本和库。6.3 拿到建议后回 VSCode 把解释器真正切过去假设 Codex 的判断是「终端里跑的是系统 PythonVSCode 运行脚本时用的是另一个」那就按下面顺序动手CtrlShiftP执行Python: Select Interpreter在列表里选带.venv的那条看一眼右下角状态栏是否同步变了把集成终端整个关掉再新开一个旧终端的 PATH 是旧值在新终端里再跑一次where.exe python或which python确认第一行已经指向项目内的 venv最后再跑一遍原来报错的脚本。如果脚本仍然报 ModuleNotFoundError但报的是另一个库名那就说明解释器已经对了只是这个库确实没装激活 venv 后pip install 包名装上就行。这个从「环境问题」到「依赖问题」的切换是整个排查里最有价值的一步因为前者会让人反复怀疑自己后者只需要一条命令。7. 这次的 Key 和用量回控制台对一下排查跑通之后建议做两件收尾的事。第一件是回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的控制台看这次请求有没有正常记上账、用了多少 token顺便确认模型 ID 和你在 config.toml 里填的是同一个。用量对不上往往意味着你本地还有另一份配置在生效比如环境变量里藏着旧 Key。第二件是把这次踩过的路径顺手记进项目 READMEvenv 在哪个目录、settings.json 写的是哪条路径、终端查询命令是什么。下次换机器或者换到 Kali 上重搭照着 README 走一遍就行不用再重新排查一次。想继续往下走的话先去 TaoToken 模型对话 用同一把 Key 发条消息确认这条通道和你在 Codex 里用的是同一个模型打算长期拿它看报错、写脚本可以打开 Coding Plan 看套餐档位需要按项目分开管 Key就在 控制台 API Keys 里新建想把这套 Base URL 接法搬到别的命令行工具Claude Code 接入文档 里的环境变量写法可以直接对照着改。