我对当前的 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