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.
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.
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.
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.
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:
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.
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.
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.
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