Почему pylance не может разрешить импорт локального относительного пути (VSCode)?

#python-3.x #python-3.6 #pylance

#python-3.x #python-3.6 #pylance

Вопрос:

Окружающая среда:

  • Python 3.6.9
  • VSCode
  • Pylance

Структура моего рабочего пространства в VSCode:

 .../sync
├── README.rm
├── script-program-1
│   ├── lib
│   │   ├── __init__.py
│   │   └── queries.py
│   └── sync.py
├── lib
│   ├── __init__.py
│   ├── config.yaml
│   ├── logging.yaml
│   └── sync_config.py
└── requirements.txt
 

Я добавил "python.analysis.extraPaths": ["./lib"] в settings.json, расположенный в sync .vscode .

Проблема в том, что в sync.py сценарий У меня возникли проблемы с импортом lib.queries. Если я попытаюсь from .lib.queries import * , pylance не жалуется, но выдает ошибку attempted relative import with no known parent package

Если я вместо этого использую from lib.queries import * python3, работает по назначению, но pylance жалуется, говоря Import "lib.queries" could not be resolved(PylancereportMissingImports)

Что я могу изменить, чтобы импорт работал, И у pylance не было проблем с ним?

Обновление Если я добавлю ./script-program-1 в settings.json python.analysis.extraPaths, проблема исчезнет. Проблема, с которой я сталкиваюсь, заключается в том, что в этом проекте могут быть сотни папок «script-program-X», и все они могут иметь свои собственные локальные файлы импорта. Обновление этой переменной extraPaths для каждого из них на любой машине VSCode, с которой я работаю, не идеально.

Я пытался использовать переменную типа «./ $ {relativeFileDirname}», а также подстановочные знаки типа «./ **» и «./*но ни один из них не работает.

Я знаю, что проблема вызвана тем, что корнем рабочей области является папка синхронизации, а не script-program-1, но я хочу, чтобы она была настроена именно так. У кого-нибудь есть решение для этого?

Комментарии:

1. Похоже, что переключение на Jedi для проекта должно сработать, или вам придется создать несколько корней для всех каталогов