Исправление «Импорт [модуль] не может быть разрешен» в pyright

Я использую pyright для проверки типов, а также использую pytest для тестирования внутри Visual Studio Code. Структура папок для моих тестов состоит в том, чтобы иметь подпапку «test» в корневом каталоге пакета. Например

|
MyPackage
|-- __init__.py
|-- MyModule.py
|--test
   |-- __init__.py
   |--MyModule_test.py

Я организую такие вещи, так как будет много пакетов, и я хочу, чтобы все было организовано. Внутри pytest у меня есть

import pytest
import MyPackage.MyModule 
...

Pytest может обнаруживать тесты и запускать их нормально, потому что у него есть особая способность настраивать свои sys.path (или что-то в этом роде). Однако pyright просто пожалуется, что не может импортировать модуль Import 'MyPackage.MyModule' could not be resolvedpyright (reportMissingImports). Это имеет смысл, но есть ли способ справиться с этим, либо в пирайтах, либо в настройках кода Visual Studio, чтобы это не жаловалось?


person Anti-Distinctlyminty    schedule 29.11.2019    source источник


Ответы (2)


Хорошо, относительный импорт, как показано здесь решить это. Так что в моем случае я должен был

# MyModule_test.py

import pytest
from .. import MyModule
person Anti-Distinctlyminty    schedule 29.11.2019
comment
У меня такая же проблема, но я не могу использовать то, что есть у вас. У меня есть такое утверждение в моем тестовом файле pytest: from quendor.zmachine.header import StoryHeader Это отлично работает, поскольку PyTest может обрабатывать импорт. Пирайт отказывается его найти. А относительный импорт вообще не работает, к сожалению. Моим единственным решением было отключить Pyright. - person Jeff Nyman; 07.06.2020

Вы можете добавить путь к библиотеке в переменную пути.

import sys
sys.path.insert(1, str('..'))
import MyModule

Чтобы разрешить Pylance правильно использовать вашу библиотеку (для автозаполнения...), выполните следующие действия:

Pylance по умолчанию включает корневой путь вашего рабочего пространства. Если вы хотите включить другие подкаталоги в качестве путей разрешения импорта, вы можете добавить их, используя настройку python.analysis.extraPaths для рабочей области.

  1. В VS Code нажмите +‹,›, чтобы открыть настройки.
  2. Введите python.analysis.extraPaths
  3. Выберите Добавить элемент
  4. Введите путь к вашей библиотеке `..'
person Ryan    schedule 13.04.2021