資源 | Github項目推薦 | 微軟開源Python靜態類型檢查器Pyright

  • 2019 年 10 月 31 日
  • 筆記

微軟最新開源Python靜態類型檢查器Pyright,比mypy快5倍

Python語言的靜態類型檢查器

創建Pyright是為了填補像 mypy 這樣的現有Python類型檢查器的漏洞。

Github項目地址:(點擊鏈接可直接打開)

https://github.com/Microsoft/pyright

速度

Pyright通常比mypy和其他用Python編寫的類型檢查器快5倍或更多。它適用於大型Python源程式碼庫。它可以在「監視」模式下運行,並在修改文件時執行快速增量更新。

沒有Python環境的依賴

Pyright是用TypeScript編寫的,在節點內運行。 它不需要安裝Python環境或導入的第三方包。 當它使用節點作為其擴展運行時,與VS程式碼編輯器一起使用效果非常好。

可配置性

Pyright支援靈活配置,可以對設置進行精細控制。 可以為源庫的不同子集指定不同的「執行環境」。 每個環境都可以指定不同的PYTHONPATH設置、python語言版本和平台目標。

類型檢查功能

Pyright 支援:

  • PEP 484 類型提示,包括泛型
  • 變數注釋的 PEP 526 語法
  • PEP 544 結構子類型
  • 函數返回值、實例變數、類變數和全局變數的類型推斷
  • 理解條件程式碼流構造的智慧類型約束,如 if/else 語句

內置類型存根

Pyright包含來自 Typeshed 的stdlib類型存根的最新副本。 它可以配置為使用Typeshed類型存根的另一個(可能是更新的或修改過的)副本。 當然,它也適用於作為項目一部分的自定義類型存根文件。

命令行或語言服務

Pyright包括用於VS Code的命令行工具語言伺服器協議插件

語言服務功能

Pyright提供以下的語言服務功能:

  • 懸停工具提示顯示類型資訊
  • 符號定義的鏈接
  • 在編輯期間智慧優先順序排隊「實時」回饋

文檔

  • 命令行選項
  • 配置
  • 入門
  • Pyright內部

使用限制

Pyright目前僅提供對Python 3.0及更高版本的支援,且目前沒有支援舊版本的計劃。

FAQ

Q:Pyright和Microsoft Python VS Code插件有什麼區別?

A:Python VS Code插件是VS Code的官方Python支援擴展。 它由Microsoft的工程師團隊提供官方支援。 它支援各種功能,包括調試、linter插件、類型檢查插件等等。 Pyright完全專註於類型檢查。 這是一個沒有專門團隊的次要項目。

Q:Pyright和Microsoft Python語言伺服器有什麼區別?

A:Microsoft Python語言伺服器是一種語言伺服器協議(LSP)實現,可以和Microsoft Python VS Code插件配合使用,並由Microsoft工程師團隊提供官方支援。 它還提供類型檢查功能。 Pyright提供了與之重複的功能,但包括了一些獨特的功能,如可配置性更高、命令行執行和更好的性能。

安裝

你可以直接從VS Code安裝最新發布的Pyright VS Code擴展版本。只需打開擴展程式面板並搜索 pyright 即可。

最新版本的命令行工具可以使用npm命令: npm i pyright 進行安裝

全局安裝:npm i -g pyright

運行命令行工具:npx pyright <options>

構建說明

要構建項目,請注意以下事項:

  • 安裝nodejs
  • 在克隆源的主目錄中打開終端窗口
  • 執行 npm run install:all 來安裝依賴項
  • 執行 npm run build

構建VS Code擴展包,請注意以下事項:

  • 步驟與以上部分相同,但是需要再加一個步驟:

執行 npm run package

生成的包(pyright-X.Y.Z.vsix)可以在客戶端目錄中找到。如需在VS Code中安裝,請轉到擴展面板,然後從菜單中選擇「從VSIX安裝…」,然後選擇對應的包即可。