离线安装Python插件前必须确认.vsix是否内置LSP服务;若仅含src/out目录则需联网下载pyright等二进制,应优先选用ms-python.python-2024.6.0等带内嵌server的稳定版,并通过unzip -l验证结构。

离线安装前必须确认插件是否真支持目标平台
很多跨平台插件(比如 ms-python.python、rust-lang.rust)的 .vsix 文件本身是“前端壳”,不包含平台相关的二进制服务(如 pyright-server、rust-analyzer)。离线安装后能显示在扩展列表里,但打开 Python 或 Rust 文件时直接变纯文本——不是装失败,而是 LSP 服务根本没落地。
验证方法:下载后先用 unzip -l your-extension.vsix 查看顶层目录结构。如果含 server/ 或 dist/ 下有 .exe/.so/.dylib,说明该版本已内嵌二进制;若只有 out/ 或 src/,那它依赖首次联网下载,离线不可用。
- 优先去
OpenVSX或VSIXhub挑选带targetPlatform=win32-x64/linux-x64/darwin-arm64标签的版本,别只认 Marketplace 页面上“Download Extension”按钮给的默认链接 - Python 插件建议选
ms-python.python-2024.6.0这类带完整pyright内置的旧稳定版,新版本(如 2024.12+)默认剥离 server,离线必卡 - Rust 插件同理,
rust-lang.rust-0.7.8比0.8.0更适合离线,后者强制拉rust-analyzer远程 release
拖拽安装没反应?检查这三个硬性条件
这是内网机器上最高频的“假失败”。VSCode 不是拒绝安装,而是压根没触发事件监听。
- VSCode 必须已加载一个工作区:哪怕只是空文件夹,不能停留在启动页或远程连接未就绪状态
- 窗口必须有系统焦点:任务栏图标高亮,且不能处于全屏、RDP、TeamViewer 或多显示器缩放偏移(尤其工控机常见 DPI 缩放错位)
- 拖的是原始
.vsix文件:不是解压后的文件夹,不是xxx.vsix.zip(Windows 会静默解压),也不是右键重命名生成的双后缀文件
验证是否为原始文件:unzip -l your-extension.vsix 应显示顶层为 extension/ 目录,且含 extension/package.json。
code --install-extension 命令静默失败的真正原因
命令行看似可靠,但离线环境下它会在三处直接放弃,且不报错:
- 路径写相对路径:Linux/macOS 必须用绝对路径,如
/home/user/ext/ms-python.python-2024.6.0.vsix;Windows 推荐正斜杠写法C:/ext/python.vsix,避免反斜杠转义问题 - 路径含空格或中文:必须加英文双引号,如
code --install-extension "/mnt/内网共享/python.vsix" - 签名验证失败:离线环境无法校验微软证书链,必须显式加
--allow-unverified参数,否则静默跳过 - VSCode 进程未彻底退出:右下角托盘图标也要右键「退出」,否则缓存不刷新,装了也看不到
补救命令示例:code --install-extension "C:/ext/python.vsix" --allow-unverified --force(--force 覆盖旧版)
装上了却没语法高亮?十有八九缺 LSP 二进制
语言类插件离线启用后卡在 “Downloading…” 或直接无响应,本质是插件清单里声明了 extensionDependencies,但 VSCode 找不到本地对应的 server 包。
- 手动补全方案:从另一台同系统、同架构、已联网装过该插件的机器上,复制
%USERPROFILE%\.vscode\extensions\ms-python.python-2024.6.0\out\server\(Windows)或$HOME/.vscode/extensions/ms-python.python-2024.6.0/out/server/(Linux/macOS)整个目录,粘贴到目标机器对应路径 - 更稳的做法:下载插件时直接找打包好的“all-in-one”版本,比如搜索
python vsix offline bundled,有些社区维护的镜像会把 server 二进制提前打进.vsix - 注意版本对齐:server 版本必须与插件主版本严格匹配,
pyright 1.1.329配ms-python.python-2024.6.0,换一个就可能报Cannot find module 'pyright'
最易被忽略的一点:某些插件(如 Verilog HDL)的 server 是 native 二进制,Windows 上是 .exe,Linux 上是 .so,拷错平台直接报 spawn ENOENT。


















