离线安装VSCode语言插件不能只装.vsix文件,因LSP服务(如pyright、volar-server)需首次启用时下载,离线环境会卡在“Downloading…”;必须在有网机器上完整触发并拷贝含native二进制的整个扩展目录到内网机对应路径,且架构需匹配、依赖插件(如Pylance、Volar)须一并部署。

离线安装 VSCode 语言支持插件(如 ms-python.python、volarjs.volar、esbenp.prettier-vscode)不能只装 .vsix 文件——装上后大概率显示“已启用”,但补全、格式化、跳转全部失效,根本原因是语言服务器(LSP)没落地。
拖 .vsix 进去就报错或没反应?先确认这三件事
VSCode 不是没收到文件,而是直接忽略拖放信号。常见卡点:
- VSCode 没加载任何工作区:至少打开一个文件夹(哪怕空的),不能只开欢迎页
- 拖入位置错误:必须拖到中央编辑区(代码显示区域),不是侧边栏、不是扩展面板、不是设置页
- 窗口无系统焦点:任务栏图标未高亮、处于全屏、或在远程桌面(RDP/TeamViewer)中——这些环境会拦截拖放事件
- 右下角出现
Extensions disabled by policy:说明企业组策略禁用了扩展安装,此时拖放和命令行都会静默失败
code --install-extension 总失败?路径、签名、进程状态缺一不可
这个命令不联网,但对运行环境极其敏感,报错即意味着硬性条件不满足:
-
command not found: code:不是 PATH 问题,而是 VSCode 从未注册 CLI;按Ctrl+Shift+P输入Shell Command: Install 'code' command in PATH并执行 -
INVALID_SIGNATURE:离线环境无法校验微软证书链,必须加--allow-unverified参数,例如:code --install-extension python.vsix --allow-unverified - 路径含空格或中文会静默失败:Windows 下移到纯英文路径(如
C:/vsix/),并用正斜杠+双引号:code --install-extension "C:/vsix/python-2026.6.123456.vsix" - 装完
code --list-extensions不显示:后台进程还在运行;彻底退出 VSCode(包括系统托盘图标),Windows 可用任务管理器结束所有Code.exe进程
装上了却“不工作”?语言服务器根本没初始化
.vsix 只是外壳,真正干活的是 pyright、volar-server、prettier CLI 这类 native 二进制——它们首次激活时才下载,离线必然卡住。
- 别信“启用即生效”:打开一个
.py文件后,ms-python.python才会触发 pyright 下载;状态栏若一直显示Downloading...,就是失败信号 - 正确做法是在有网机器上完整走一遍流程:安装
.vsix→ 打开.py文件 → 等输出面板Python通道日志停止滚动、出现Starting Microsoft Python Language Server→ 彻底退出 VSCode - 找到扩展目录(Windows:
%USERPROFILE%\.vscode\extensions\ms-python.python-2026.6.123456\),确认存在out/client/pyright或node_modules子目录 → 整个目录拷到内网机对应路径 - 架构必须一致:M系列 Mac 上不能用 x64 版本的
.vsix或扩展目录,否则spawn ENOENT错误无法避免
怎么验证语言服务真离线可用?别只看插件列表
光在扩展面板里看到“已启用”毫无意义,得测真实行为:
- 打开命令面板(
Ctrl+Shift+P),输入Python: Show Output,切换到Python面板,应无红色错误,且能看到 LSP 启动日志 - 对一个
.py文件按Ctrl+Space,应弹出补全项,不是no suggestions - 右键 →
Format Document,若用 Prettier,应成功格式化,而不是报prettier is not installed - 终端执行:
ls -l ~/.vscode/extensions/*/out/**/pyright(Linux/macOS),看是否返回可执行文件路径及时间戳
最易被忽略的一点:语言插件的依赖不是可选的——ms-python.python 强依赖 ms-python.pylance,volarjs.volar 依赖 vue.volar,漏掉任一,功能就断链。离线部署前,务必在有网机上用 code --list-extensions 导出完整列表,再逐个下载对应 .vsix 或迁移整目录。


















