„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Emacs für Python und Poesie mit „basedpyright-langserver“.

Emacs für Python und Poesie mit „basedpyright-langserver“.

Veröffentlicht am 05.11.2024
Durchsuche:553

Emacs for Python and Poetry Using `basedpyright-langserver`

Ich bin mit meinem aktuellen Emacs-Setup für Python sehr zufrieden, aber ich fand das Setup etwas schwierig. Ich werde mein Setup hier für mein zukünftiges Ich und für alle anderen Pythonistas dokumentieren, die nach einer soliden Emacs-Konfiguration suchen.

Warum basiert Pyrright?

Bis jetzt habe ich mypy --strict in der Befehlszeile für alle meine Typprüfungsanforderungen verwendet, aber mypy ist selbst für sehr kleine Codebasen ziemlich langsam, und selbst im --strict-Modus ist es einfach nicht so So streng es auch sein könnte. Es ist auch kein Sprachserver, den ich für mein Emacs-Setup möchte.

basedpyright ist ein Fork von Pyright mit einigen hervorragenden Verbesserungen sowohl bei der Überprüfung als auch bei der Zuverlässigkeit. Es ist ein schneller und wunderbar strenger Typprüfer mit einigen guten Linting-Fähigkeiten.

Die einzigen Nachteile, die ich erlebe, sind, dass es mit den boto3-stubs-Clients für AWS nicht ganz so gut funktioniert wie mypy und dass es nicht standardmäßige # pyright: Kommentare ignorieren anstelle des Standardtyps # type: Kommentare ignorieren, aber verwendet Ich kann mit diesen Problemen leben und befürworte eine rigoros strenge Typprüfung.

Konfigurieren Sie Ihre Poetry-Projekte für die Verwendung mit basedpyright oder pyright

Wenn Sie bereits Projekte haben, die Poetry verwenden, sollten Sie ein wenig mit Ihrer virtuellen Umgebung herumspielen.

Gehen Sie zum Stammverzeichnis jedes Ihrer Projekte und führen Sie den folgenden Befehl aus:


poetry config --local virtualenvs.in-project true


Dadurch wird eine Datei poetry.toml erstellt, falls noch keine vorhanden ist, und eine entsprechende Einstellung hinzugefügt.

Dies wird jedoch nicht Ihre bestehende virtuelle Umgebung tatsächlich verschieben. Damit diese Änderung wirksam wird, müssen Sie Ihre vorhandene virtuelle Umgebung entfernen, die Sie durch Ausführen von

finden.

poetry env info --path


Vergessen Sie nicht, den Pfad .venv zu Ihrem .gitignore und die Konfiguration für alle anderen Tools hinzuzufügen, die Sie möglicherweise verwenden, wie z. B. Pycodestyle, sonst erhalten Sie am Ende ziemliches Durcheinander.

Als nächstes sollten Sie Ihrer pyproject.toml einen Konfigurationsabschnitt hinzufügen, um basedpyright mitzuteilen, wo nach Ihrer virtuellen Umgebung gesucht werden soll.


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


Sie können dies auch in der Datei pyrightconfig.json tun, wenn Sie im Gegensatz zu mir nicht bereits das Gefühl haben, mit Konfigurationsdateien für verschiedene Python-Entwicklungstools völlig überfüllt zu sein.

Basedpyright als Sprachserver installieren

Eine sehr schöne Sache an basedpyright gegenüber pyright ist, dass es die NodeJS-Abhängigkeit als Rad aufbaut, sodass Sie sicher sein können, dass Basedpyright auf Ihrem Computer funktionieren sollte, unabhängig davon, ob Sie NodeJS installiert haben.

Zur Isolierung ist es normalerweise eine gute Idee, ausführbare Python-Pakete mit pipx statt pip zu installieren. Lasst uns weitermachen und das tun.


pipx install basedpyright


Erwägen Sie für eine Plausibilitätsprüfung die Ausführung von


basedpyright --version


Durch die Installation von basedpyright erhalten Sie auch Zugriff auf den Befehl basedpyright-langserver, der jedoch nicht wirklich für die Interaktion mit Benutzern geschrieben wurde. Wenn Sie also basedpyright-langserver oder basedpyright-langserver --version oder etwas anderes ausführen, erhalten Sie einen NodeJS-Stack-Trace.

Emacs für die Verwendung von basedpyright-langserver konfigurieren

Ich gehe davon aus, dass Sie als Leser wissen, wie man Pakete von MELPA installiert, und eine bevorzugte Methode dafür kennen. Hier finden Sie alle Pakete, die Sie benötigen:

  • Unternehmen
  • lsp-modus
  • lsp-pyright
  • lsp-ui
  • Python-Modus

Installieren Sie diese und öffnen Sie dann Ihr ~/.emacs oder Ihr ~/.emacs.d/init.el und fügen Sie Folgendes hinzu:


;; 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)))


Das sollte alles sein, was Sie brauchen.

Ein allgemeiner Tipp zum Debuggen des LSP-Modus

Wenn Sie das Gefühl haben, alles richtig eingerichtet zu haben und Sie immer noch Probleme haben, den LSP-Modus dazu zu bringen, Pakete zu finden, die in Poetry verfügbar sein sollten, können Sie versuchen, Ihre zu löschen. ~/.emacs.d/.lsp-session-v1. Dies hat zur Folge, dass der LSP-Modus das Projektstammverzeichnis vergisst und erneut danach suchen muss.

Viel Spaß beim Codieren!

Ich hoffe, dies hat Ihnen einen guten Start in Ihre Python-Entwicklungsumgebung verschafft. Wenn Sie Fragen haben, bin ich in all dem ein Anfänger und kann Ihnen wahrscheinlich nicht helfen, aber ich werde Zusammenführungsanfragen in Betracht ziehen, wenn Sie zusätzliche Tipps oder Tricks für die Verwendung von basedpyright mit Emacs haben.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/webbureaucrat/emacs-for-python-and-poetry-using-basedpyright-langserver-ca9?1 Bei Verstößen wenden Sie sich zum Löschen bitte an [email protected] Es
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3