我對目前的 Python emacs 設定非常滿意,但我發現設定有點棘手。我將在這裡為我未來的自己和任何其他正在尋找可靠的 emacs 配置的 Pythonista 記錄我的設定。
為什麼是基於pyright?
到目前為止,我一直在命令列上使用mypy --strict 來滿足我所有的類型檢查需求,但即使對於非常小的程式碼庫,mypy 也相當慢,即使在--strict 模式下,它也不如盡量嚴格。它也不是我的 emacs 設定所需要的語言伺服器。
basedpyright 是 Pyright 的一個分支,在檢查和可靠性方面都有一些出色的改進。它是一個快速且極其嚴格的類型檢查器,此外還具有一些良好的 linting 功能。
我遇到的唯一缺點是它不像mypy 與AWS 的boto3-stubs 用戶端一樣好用,而且它使用非標準的#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="."
如果與我不同,您還沒有感覺到不同 Python 開發工具的設定檔完全超載,您也可以在 pyrightconfig.json 檔案中執行此操作。
安裝 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 的額外提示或技巧,我會考慮合併請求。
以上是使用 `basedpyright-langserver` 實作 Python 和 Poetry 的 Emacs的詳細內容。更多資訊請關注PHP中文網其他相關文章!

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版