我對目前的 Python emacs 設定非常滿意,但我發現設定有點棘手。我將在這裡為我未來的自己和任何其他正在尋找可靠的 emacs 配置的 Pythonista 記錄我的設定。
到目前為止,我一直在命令列上使用mypy --strict 來滿足我所有的類型檢查需求,但即使對於非常小的程式碼庫,mypy 也相當慢,即使在--strict 模式下,它也不如盡量嚴格。它也不是我的 emacs 設定所需的語言伺服器。
basedpyright 是 Pyright 的一個分支,在檢查和可靠性方面都有一些出色的改進。它是一個快速且非常嚴格的類型檢查器,另外還具有一些良好的 linting 功能。
我遇到的唯一缺點是,它在AWS 的boto3-stubs 客戶端上的表現不如mypy 那麼好,而且它使用非標準的#pyright:ignore comments 而不是標準的#type:ignore comments,但是我可以忍受這些問題,支援嚴格的類型檢查體驗。
如果您有使用 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 相對於 Pyright 的一個非常好的一點是,它將 NodeJS 依賴項構建為輪子,因此您可以放心,無論您是否安裝了 NodeJS,basedpyright 都應該在您的電腦上運行。
為了隔離,通常最好使用 pipx 而不是 pip 安裝可執行 Python 套件。讓我們繼續吧。
pipx install basedpyright
為了進行健全性檢查,請考慮運行
basedpyright --version
安裝basedpyright還可以讓您訪問basedpyright-langserver命令,但這並不是真正為用戶交互而編寫的,所以如果您運行basedpyright-langserver或basedpyright-langserver --version或其他東西,您將獲得nodejs堆棧跟踪。
我假設您作為讀者知道如何從 MELPA 安裝軟體包並且有首選的方法。以下是您需要的所有軟體包:
安裝這些,然後打開 ~/.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 模式來查找Poetry 中應該可用的軟體包,您可以嘗試的一件事是進入並刪除您的 〜/.emacs .d/.lsp-session-v1。這將導致 lsp-mode 忘記專案根目錄並強迫它再次找到它。
我希望這能讓您在 Python 開發環境方面有一個好的開始。如果您有任何疑問,好吧,我是這一切的初學者,我可能無法幫助您,但如果您有任何在 emacs 中使用 basedpyright 的額外提示或技巧,我會考慮合併請求。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3