> 技术文档 > Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance

Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance


目录

  • 背景
  • 0. Trae 环境准备(可省略)
  • 1. 从VSCode市场获取插件安装包
  • 2. 直接安装插件至Trae会失败
  • 3. 解压 vsix 文件
  • 4. 直接移动安装
  • 20250603更新
  • 20250605更新
    • 问题分析
    • 不慎取消封禁
  • 20250709更新
  • 参考文献:

背景

基于 VSCode 改版但使用 Open VSX 的编辑器(如 trae、Cursor)会遇到以下限制1

微软官方插件(Pylance/Remote SSH/C#工具链等)仅在 Microsoft Marketplace 分发,这些闭源插件不会同步到 Open VSX 仓库。Pylance 的智能补全、类型检查等高级功能将缺失。

官方建议的用 pyright 来代替2 3,但是 pyright 远不如 pylance,缺失后非常不方便。观察到官方文档4有如下图:
Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance
可以推测,其实 trae 可以装上 Pylance插件。经过实验,发现确实trae可以使用 pylance 的老版本。

免责声明:根据微软官方的声明,pylance 仅被授权于使用于 VS Code 中,其他使用均未被授权,本文的方法不得被用于任何侵犯微软版权的活动中。

0. Trae 环境准备(可省略)

主要思路是仿照在基于VS code 的开源软件 VSCodium 里安装 Pylance 插件5

  • 找到 trae 安装目录,如 F:\\Programs\\Trae\\resources\\app\\
  • 修改 product.json(可以先进行备份):

将其中的

\"extensionsGallery\": {\"serviceUrl\": \"https://open-vsx.org/vscode/gallery\",\"controlUrl\": \"https://lf3-static.bytednsdoc.com/obj/eden-cn/lkpkbvsj/ljhwZthlaukjlkulzlp/marketplace/controlUrl.json\",\"searchUrl\": \"https://open-vsx.org/vscode/gallery/extensionquery\"},

改为:

\"extensionsGallery\": {\"serviceUrl\": \"https://marketplace.visualstudio.com/_apis/public/gallery\",\"cacheUrl\": \"https://vscode.blob.core.windows.net/gallery/index\",\"itemUrl\": \"https://marketplace.visualstudio.com/items\"},

这里的作用是将插件更新的连接全部指向 VS Code官方的插件市场。

1. 从VSCode市场获取插件安装包

这里需要从VSCode市场手动获取安装包6

  • 访问VSCode插件市场,搜索目标插件(Pylance);
  • 进入插件详情页,点击Version History查看历史版本;
  • https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance 中提取关键参数:
    • itemName字段拆分为:fieldA=ms-pythonfieldB=vscode-pylance
    • 选择兼容版本号 (如 2023.9.10

笔者得到的下载链接为(大概16M):

https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-python/vsextensions/vscode-pylance/2023.9.10/vspackage

2. 直接安装插件至Trae会失败

浏览器打开上述链接,会自动下载.vsix文件,得到 ms-python.vscode-pylance-2023.9.10.vsix 文件。

但是此时如果打开Trae,进入插件市场,然后拖拽下载的.vsix文件至插件面板安装,会报错:
Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance
即:

Installation failed
Currently, ms-python.vscode-pylance is not supported for installation

因此不能直接这样安装。注意,如果这种安装方式出现另一个错误:

End of central directory record signature not found. Either not a zip file, or file is truncated.

则说明文件没有下载完整,请重新下载。

3. 解压 vsix 文件

  • 保持 Trae 打开,并在项目中任意打开一个python文件,左边栏停留在插件市场的界面。

  • ms-python.vscode-pylance-2023.9.10.vsix 文件 解压 提取到 ms-python.vscode-pylance-2023.9.10 文件夹:
    Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance

  • 然后将 extension 文件夹里的所有文件复制到本目录下:
    Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance

  • 修改 package.json,将 \"displayName\": \"Pylance\" 改为 \"displayName\": \"Pylance-trae\" (避免Trae识别到pylance,不过新版中已失效)。

  • 进入此时 dist 文件夹下,复制一个 extension.bundle.js 作为部分,然后新建一个空白的 extension.bundle.js 7
    Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance

4. 直接移动安装

  • 还是保持 Trae 打开,并在项目中任意打开一个python文件,左边栏停留在插件市场的界面。
  • ms-python.vscode-pylance-2023.9.10 文件夹 移动至 trae 的插件目录 C:\\Users\\你的用户名\\.trae\\extensions
    Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance
  • 此时会发现,已安装的插件里会自动更新出现 Pylance-trae 插件:
    Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance
  • trae 的插件目录 C:\\Users\\你的用户名\\.trae\\extensions 下的 extensions.json 里面会自动多一项:

,{“identifier”:{“id”:“ms-python.vscode-pylance”},“version”:“2023.9.10”,“location”:{“$mid”:1,“fsPath”:“c:\\Users\\xxx\\.trae\\extensions\\ms-python.vscode-pylance-2023.9.10”,“_sep”:1,“external”:“file:///c%3A/Users/xxx/.trae/extensions/ms-python.vscode-pylance-2023.9.10”,“path”:“/c:/Users/xxx/.trae/extensions/ms-python.vscode-pylance-2023.9.10”,“scheme”:“file”},“relativeLocation”:“ms-python.vscode-pylance-2023.9.10”}

注意,这里在移动文件夹之后笔者的 trae 是自动更新到了插件。没有出现说明失败了。

  • 最后重启 trae,即可享受 pylance 插件的丝滑。

Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance

20250603更新

trae 国际版进行了更新,变为了付费版,原来旧的 trae 版本下 pylance 等插件可以正常使用,但是内置的模型不再进行更新了,因此只能主动升级(不卸载直接用最新安装包安装)。 实测发现如果主动更新到当前最新版 1.4,pylance 等 publisher 为 ms-python 的插件将会被 trae 主动检测并变得不完全可用:只能跳转函数,无法识别(突出)未导入/定义的包、库或者变量。

官方推荐的替代是:BasedPyright 8。但是它只能实现函数定义跳转,依旧无法识别(突出)未导入/定义的包、库或者变量。

20250605更新

经过不懈努力,终于不慎解决了pylance在新版Trae的使用。前面的安装操作还是一样。

问题分析

检查Trae的output栏,进行如下设置
Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance

可以发现,当不慎强行启用pylance时,会出现
Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance
检测信息为:

[iCube] getExtension block: true, sourceExtension: ms-python.python(ms-python.python), targetExtensionId: ms-python.vscode-pylance

这是 Trae 官方新加的主动封禁功能。

不慎取消封禁

经过查找定位,在Trae软件的安装目录,找到 Trae\\resources\\app\\out\\vs\\workbench\\api\\node\\extensionHostProcess.js
将代码里的函数 function hq(e,t,i,r)

function hq(e,t,i,r){if(!e||!e.iCubeApp?.icubeExtensionControl)return!1;const s=Sm.findOne(e.iCubeApp.icubeExtensionControl,i);if(!s)return!1;const n=s.actions?.extHostBlockGetExtension;if(!n||!Array.isArray(n))return!1;for(const o of n){if(o.fromExtId===t.id)return r?.info(`[iCube] getExtension block: ${o.block}, sourceExtension: ${o.fromExtId}(${t.id}), targetExtensionId: ${i}`),o.block;if(o.fromExtId===\"*\")return r?.info(`[iCube] getExtension block: ${o.block}, sourceExtension: ${o.fromExtId}(${t.id}), targetExtensionId: ${i}`),o.block}return!1}

(修改前请备份)改为:

function hq(e, t, i, r){return false;}

然后找到 Trae\\resources\\app\\out\\vs\\workbench\\api\\worker\\extensionHostWorkerMain.js
将代码里的函数 function iO(e,t,i,r)

function iO(e,t,i,r){if(!e||!e.iCubeApp?.icubeExtensionControl)return!1;const s=ip.findOne(e.iCubeApp.icubeExtensionControl,i);if(!s)return!1;const n=s.actions?.extHostBlockGetExtension;if(!n||!Array.isArray(n))return!1;for(const o of n){if(o.fromExtId===t.id)return r?.info(`[iCube] getExtension block: ${o.block}, sourceExtension: ${o.fromExtId}(${t.id}), targetExtensionId: ${i}`),o.block;if(o.fromExtId===\"*\")return r?.info(`[iCube] getExtension block: ${o.block}, sourceExtension: ${o.fromExtId}(${t.id}), targetExtensionId: ${i}`),o.block}return!1}

(修改前请备份)改为:

function iO(e,t,i,r){return false;}

然后再重启IDE以及重新禁用启用pylance插件。
Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance
即使此时处于 Unavailable 的状态,依旧可以不慎正常使用pylance。

注意进行上述更改后,Trae 会提示:Your Trae installation appears to be corrupt. Please reinstall.
Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance
如上图所示,不过可以忽略。

经过上述不慎操作后,此时可以实现:

  1. 环境中没有的包或者工程中不存在的自定义函数下划线突出显示;
  2. 跳转函数定义;
  3. 未定义的变量下划线突出显示;
  4. 未使用的库一目了然。
    Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)_trae pylance

20250709更新

发现pylance突然又失效了,但是实测把 C:\\Users\\xxx\\.trae\\extensions\\ms-python.vscode-pylance-2023.9.10 下的 package.json 里面 \"publisher\": \"ms-python\" 改成 \"publisher\": \"ms-python0\",重启Trae,然后再改回去(一定要再恢复),重启Trae,奇迹般地又好了。暂时不清楚为什么😂,可能Trae的检测具有时效性。


参考文献:


  1. 使用 trae、cursor 这些魔改版的 vscode 是不是无法使用微软第一方的插件 Pylance 了? ↩︎

  2. 对原 vs code 支持的插件不支持,如 Pylance 高亮代码 #185 ↩︎

  3. Pylance not available #38 ↩︎

  4. Trae官方文档管理插件 ↩︎

  5. Solution to Pylance not working with VSCodium #1641 ↩︎

  6. Trae如何导入VSCode插件?三种方法详解 ↩︎

  7. VSCodium无法使用新版Pylance的解决方法 ↩︎

  8. 问题排查 ↩︎