使用 Poetry 设置 Emacs Elpy

Setting up Emacs Elpy with Poetry

如何配置 Elpy 以使用安装在 Poetry 项目虚拟环境中而不是系统范围内安装的开发依赖项,如 Black、Jedi 和 flake8?

使用 poetry.el Emacs package 并通过 add-hook 将其 elpy-mode-hook 启用 poetry-tracking-mode。 Elpy 将自动检测 Poetry 虚拟环境并检查该环境中的那些开发工具。

2021 年 1 月更新:我已经停止使用 Elpy 并切换到 lsp-modelsp-python-ms - 这是一种更好的开发体验。唯一需要注意的是,它只能发现项目本地的 virtualenvs,因此必须将 Poetry 配置为在本地创建 venvs (poetry config virtualenvs.in-project true)。

如果您使用emacs -nw,那么另一个选项是

  • 在poetry项目中安装virtualenvwrapper。即运行poetry add -D virtualenvwrapper.
  • 安装你需要的elpy依赖。 M-x elpy-config' to find dependencies. So 诗歌添加 -D jedi rope autopep8 yapf black flake8`。这也可以在 elpy 提示您时完成,但它可能会作为普通依赖项安装,而不仅仅是开发依赖项。
  • 添加 (setq elpy-rpc-virtualenv-path 'current) 以便 elpy 使用 poetry virtual env for Virtualenv, Interactive Python, RPC virtual env.
  • 通过诗歌启动 emacs poetry run emacs -nw

您需要为每个诗歌项目执行此操作。应该有办法在 pyenv 中全局安装其中一些,并让 poetry 和项目 virtual env 接收它。但是,为每个项目执行此操作会保持依赖关系隔离,即使对于开发人员也是如此。