Возникла проблема с Pyright в монорепозитории: он не распознавал классы/функции, импортированные из близлежащих проектов/библиотек (поставьте reportMissingImports
).
Например, с этой структурой репо:
.
├── library
| └── src
| └── __init__.py
├── project1
| └── src
| └── 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
, чтобы правильно настроить пирайт для всего репозитория, но пока ничего не помогло.
Как правильно настроить несколько venv с помощью Pyright?
К вашему сведению, моя конечная цель — настроить Pyright для Sublime Text 3 с помощью LSP-pyright и Python >=3.11. Но по крайней мере до этого командная строка должна работать (-‿-")
Привет ! Да, pyrightconfig.json
находится на корневом уровне, и я запускаю его оттуда. Но проблема в событии в командной строке pyright
, поэтому... Я внес некоторые улучшения, установив extraPaths. Я обновлю свой вопрос своим конфигурационным файлом
Хороший улов!, ситуация значительно улучшилась, когда я снова открыл папку проекта с помощью Sublime, а не добавляя в проект каждую папку подкаталога. По-прежнему существует проблема с командной строкой pyright
, касающаяся внешних библиотек (зависимость в проекте 1, которой нет в других папках).
И, кстати, LSP-pyright, похоже, не обрабатывает конфигурацию pyproject.toml.
Здесь несколько вещей:
pyproject.toml
на корневом уровне (в документации это не указано);pyrightconfig.json
довольно прост:{
//"verboseOutput": true,
"reportMissingImports": "none",
"reportMissingModuleSource": "none",
"executionEnvironments": [
{
"root": ".",
"extraPaths": ["library/src", "project1/src", "project2/src"]
}
]
}
extraPaths
решено из корневого каталога. Ему необходимо объявление src/subdir.
Я предполагаю, что вы используете это. В нижней части файла readme написано: если вы хотите перезаписать виртуальную среду, файлpyrightconfig.json должен присутствовать в корне вашего проекта. Вы пробовали это делать и открыли проект на должном уровне?