code --install-extension装不上但没报错,大概率是插件声明的extensionDependencies被静默跳过,导致主包安装成功但功能失效;需解压vsix查依赖、逐个下载安装,并确保LSP二进制等运行时依赖已离线部署。

code --install-extension 装不上,但没报错?大概率是依赖被静默跳过
VSCode 命令行安装 .vsix 时,如果插件声明了 extensionDependencies(比如 ms-python.python 强依赖 ms-toolsai.jupyter 和 ms-python.pylance),而你只传入主包路径,它不会报错,也不会提示缺啥——直接装完主包就停了,后续功能全失效。
实操建议:
- 先解压 .vsix:
unzip -p your-extension.vsix extension/package.json | grep extensionDependencies,确认依赖列表 - 去 Marketplace 页面手动搜每个依赖项(如
ms-python.pylance),逐个点 “Download Extension” 下载对应 .vsix - 按依赖顺序安装:先装
ms-toolsai.jupyter,再装ms-python.pylance,最后才是ms-python.python - Windows 上用 PowerShell 批量装:
Get-ChildItem *.vsix | ForEach-Object { code --install-extension $_.FullName }
Python/Go/Vue 插件装完不工作?缺的是运行时 LSP 二进制,不是 .vsix
离线环境里,ms-python.python、golang.go、volarjs.volar 这类插件安装后只是注册,首次打开对应文件才会触发下载 pyright、gopls、volar-server 等本地服务。断网时这个过程卡死,状态栏一直显示 “Downloading…”。
实操建议:
- 在有网机器上,用同一版本 VSCode 打开一个
.py文件 → 等状态栏不再动 → 关闭所有 VSCode 窗口 - 进用户扩展目录:
$HOME/.vscode/extensions/(Linux/macOS)或%USERPROFILE%\.vscode\extensions\(Windows) - 找到刚装的插件文件夹(如
ms-python.python-2024.6.0),整个打包复制过去 - 注意:必须含
node_modules/和子目录下的dist/或out/里的可执行二进制(如pyright-server)
如何验证插件依赖是否真齐了?别信“已安装”状态栏
VSCode 扩展面板里显示 “已安装”,只代表 package.json 被读取成功,不代表所有依赖模块都加载完毕。真正能验证的方式是看输出面板和进程。
实操建议:
- 打开命令面板(
Ctrl+Shift+P),执行Developer: Toggle Developer Tools,切到 Console 标签页,看有没有Failed to load或spawn ENOENT - 打开输出面板(
Ctrl+Shift+U),从下拉选单切换到Python、Go或Volar,观察是否有Starting language server...后无响应 - 终端里跑:
ps aux | grep -i "gopls\|pyright\|volar",没进程说明 LSP 根本没起来 - 检查插件目录权限:
ls -l $HOME/.vscode/extensions/ms-python.python-*/,确保当前用户有读+执行权,尤其node_modules/.bin/下的文件
批量部署时 extensions 目录路径不统一?用 code --extensions-dir 绕过
不同系统、不同安装方式(deb/rpm/AppImage/zip)下,.vscode/extensions 实际位置可能落在 /opt/、/usr/share/ 或用户家目录,硬编码路径脚本一跑就挂。
实操建议:
- 统一指定扩展目录:
code --extensions-dir "$HOME/.vscode-offline-extensions" --install-extension /path/to/plugin.vsix - 配合
--user-data-dir隔离配置,避免污染主环境:code --user-data-dir "$HOME/vscode-test" --extensions-dir "$HOME/vscode-exts" --install-extension p.vsix - 安装完后,可把
$HOME/vscode-exts整个目录打包,直接 rsync 到其他机器,再用同样参数启动 - 注意:该目录下不能有同名插件的不同版本残留,否则 VSCode 启动时会报
Extension host terminated unexpectedly


















