Pyright 具有多个 venv (monorepo)

问题描述 投票:0回答:1

在 monorepo 上遇到了 Pyright 的问题:它无法识别从附近项目/库导入的类/函数(获得

reportMissingImports
)。

例如,使用此存储库结构:

.
├── library
|   └── __init__.py
├── project1
|   └── main.py
├── project2 ...
└── pyproject.toml

main.py
中的这一行将引发
reportMissingImports
错误(即使代码正在运行):

from library import ModuleClass

作为手动解决方法,此命令从根级别运行:

poetry run pyright --pythonpath project1/.venv/bin/python project1/main.py

但是由于我有多个项目,每个项目都有自己的 .venv 文件夹,因此我无法全局设置

pythonpath

我尝试了

pyproject.toml
中的多个选项来为整个存储库正确配置pyright,但到目前为止没有任何效果。 像pyright一样配置多个venv的正确方法是什么?

仅供参考,作为上下文,我的最终目标是使用 LSP-pyright 和 python >=3.11 为 Sublime Text 3 设置 Pyright。但在此之前至少命令行应该可以工作(-‿-")

python sublimetext python-venv pyright
1个回答
0
投票

这里有很多东西:

  • Sublime Text 项目需要定位根目录。我曾经通过添加每个子目录来打开我的项目,但实际上这是一个坏主意;
  • LSP-pyright 似乎也在根级别读取
    pyproject.toml
    配置(在其文档中未精确说明);
  • 我的最终
    pyrightconfig.json
    文件非常简单:
{
    //"verboseOutput": true,
    "reportMissingImports": "none",
    "reportMissingModuleSource": "none",
    "executionEnvironments": [
        {
          "root": ".",
          "extraPaths": ["library/src", "project1/src", "project2/src"]
        }
    ]
}

extraPaths
是从根目录解析的。它需要 src/ subdir 声明。

© www.soinside.com 2019 - 2024. All rights reserved.