Pyright 看不到 Poetry 依赖关系

Mar*_*ack 1 python python-venv python-poetry pyright

在诗歌项目中,本地依赖项安装在~/.cache/pypoetry/virtualenvs/文件夹中。nvim 中的 Pyright 抱怨import无法解析包行。我应该包含什么内容pyproject.toml?或者如何向pyright显示依赖项的路径?谢谢

我的pyrightconfig.json看起来像这样:

{
    "venvPath": ". /home/ajanb/.cache/pypoetry/virtualenvs/",
    "venv": "tools-configfactory-materialmodel-jnEEQvIP-py3.10"
}
Run Code Online (Sandbox Code Playgroud)

我发现我需要将它添加到neovim的配置文件中,你能帮我把它写成.lua吗?

  au FileType python let b:coc_root_patterns = ['.git', '.env', 'venv', '.venv', 'setup.cfg', 'setup.py', 'pyrightconfig.json']
Run Code Online (Sandbox Code Playgroud)

use*_*952 7

我花了几天时间解决这个问题。最后,唯一有效的是将其包含在我的pyproject.toml

[tool.pyright]
venvPath = "/Users/user/Library/Caches/pypoetry/virtualenvs"
venv = "bfrl-93mGb6aN-py3.11"

Run Code Online (Sandbox Code Playgroud)

我也在使用这个 nvim 插件:pote-v

我想你可以通过适当的 LSP 配置来完成此任务,但我对 lua 和 lsp 配置不够熟悉,无法自动解决这个问题。


小智 7

这就是我解决这个问题的方法。在我的 pyproject.toml 中,我像这样配置了pyright(除其他外):

[tool.pyright]
venvPath = "."
venv = ".venv"
Run Code Online (Sandbox Code Playgroud)

然后我在我的项目中包含了一个诗歌.toml:

[virtualenvs]
in-project = true
Run Code Online (Sandbox Code Playgroud)

这样我就不必发现虚拟环境的路径和名称,它始终相同并且在项目中可用。