我对当前的 Python emacs 设置非常满意,但我发现设置有点棘手。我将在这里为我未来的自己和任何其他正在寻找可靠的 emacs 配置的 Pythonista 记录我的设置。
到目前为止,我一直在命令行上使用 mypy --strict 来满足我所有的类型检查需求,但即使对于非常小的代码库,mypy 也相当慢,即使在 --strict 模式下,它也不如尽可能严格。它也不是我的 emacs 设置所需要的语言服务器。
basedpyright 是 Pyright 的一个分支,在检查和可靠性方面都有一些出色的改进。它是一个快速且极其严格的类型检查器,此外还具有一些良好的 linting 功能。
我遇到的唯一缺点是它不像 mypy 与 AWS 的 boto3-stubs 客户端一样好用,而且它使用非标准的 #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="."
如果与我不同,您还没有感觉到不同 Python 开发工具的配置文件完全超载,您也可以在 pyrightconfig.json 文件中执行此操作。
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 的额外提示或技巧,我会考虑合并请求。
以上是使用 `basedpyright-langserver` 实现 Python 和 Poetry 的 Emacs的详细内容。更多信息请关注PHP中文网其他相关文章!