」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 `basedpyright-langserver` 實作 Python 和 Poetry 的 Emacs

使用 `basedpyright-langserver` 實作 Python 和 Poetry 的 Emacs

發佈於2024-11-05
瀏覽:400

Emacs for Python and Poetry Using `basedpyright-langserver`

我對目前的 Python emacs 設定非常滿意,但我發現設定有點棘手。我將在這裡為我未來的自己和任何其他正在尋找可靠的 emacs 配置的 Pythonista 記錄我的設定。

為什麼是基於pyright?

到目前為止,我一直在命令列上使用mypy --strict 來滿足我所有的類型檢查需求,但即使對於非常小的程式碼庫,mypy 也相當慢,即使在--strict 模式下,它也不如盡量嚴格。它也不是我的 emacs 設定所需的語言伺服器。

basedpyright 是 Pyright 的一個分支,在檢查和可靠性方面都有一些出色的改進。它是一個快速且非常嚴格的類型檢查器,另外還具有一些良好的 linting 功能。

我遇到的唯一缺點是,它在AWS 的boto3-stubs 客戶端上的表現不如mypy 那麼好,而且它使用非標準的#pyright:ignore comments 而不是標準的#type:ignore comments,但是我可以忍受這些問題,支援嚴格的類型檢查體驗。

配置您的 Poetry 專案以使用 basedpyright 或 Pyright

如果您有使用 Poetry 的現有項目,您將需要稍微調整一下您的虛擬環境。

前往每個專案的根目錄並執行以下命令:


poetry config --local virtualenvs.in-project true


這將建立一個 poetry.toml 檔案(如果尚不存在)並添加相應的設定。

然而,這不會實際上移動您現有的虛擬環境。為了使此變更生效,您必須刪除現有的虛擬環境,您可以透過執行

找到該環境

poetry env info --path


不要忘記將 .venv 路徑添加到 .gitignore 以及您可能使用的任何其他工具(如 pycodestyle)的配置,否則您最終會得到真是一團糟。

接下來,您應該在 pyproject.toml 中新增一個配置部分,以告訴 basedpyright 在哪裡找到您的虛擬環境。


[tool.pyright]
venv=".venv"
venvPath="."


您也可以在 pyrightconfig.json 檔案中執行此操作,如果與我不同的是,您還沒有感覺到不同 Python 開發工具的設定檔完全超載。

安裝 basedpyright 作為語言伺服器

basedpyright 相對於 Pyright 的一個非常好的一點是,它將 NodeJS 依賴項構建為輪子,因此您可以放心,無論您是否安裝了 NodeJS,basedpyright 都應該在您的電腦上運行。

為了隔離,通常最好使用 pipx 而不是 pip 安裝可執行 Python 套件。讓我們繼續吧。


pipx install basedpyright


為了進行健全性檢查,請考慮運行


basedpyright --version


安裝basedpyright還可以讓您訪問basedpyright-langserver命令,但這並不是真正為用戶交互而編寫的,所以如果您運行basedpyright-langserver或basedpyright-langserver --version或其他東西,您將獲得nodejs堆棧跟踪。

設定 emacs 使用 basedpyright-langserver

我假設您作為讀者知道如何從 MELPA 安裝軟體包並且有首選的方法。以下是您需要的所有軟體包:

  • 公司
  • lsp 模式
  • lsp-pyright
  • lsp-ui
  • python 模式

安裝這些,然後打開 ~/.emacs~/.emacs.d/init.el 並添加以下內容:


;; lsp global settings
(add-hook 'after-init-hook 'global-company-mode)
(setq lsp-auto-guess-root t)

;; python
(require 'lsp-mode)
(setq lsp-pyright-langserver-command "basedpyright")
(add-hook 'python-mode-hook (lambda () (require 'lsp-pyright) (lsp)))


這應該是您所需要的。

調試 lsp 模式的一般技巧

如果您覺得您已經正確設定了所有內容,但仍然無法使用lsp 模式來查找Poetry 中應該可用的軟體包,您可以嘗試的一件事是進入並刪除您的 〜/.emacs .d/.lsp-session-v1。這將導致 lsp-mode 忘記專案根目錄並強迫它再次找到它。

快樂編碼!

我希望這能讓您在 Python 開發環境方面有一個好的開始。如果您有任何疑問,好吧,我是這一切的初學者,我可能無法幫助您,但如果您有任何在 emacs 中使用 basedpyright 的額外提示或技巧,我會考慮合併請求。

版本聲明 本文轉載於:https://dev.to/webbureaucrat/emacs-for-python-and-poetry-using-basedpyright-langserver-ca9?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3