在pyright中修复“无法解析导入[模块]”

时间:2019-11-29 17:09:28

标签: python visual-studio-code pytest pyright

我正在使用pyright进行类型检查,还使用pytest在Visual Studio Code中进行测试。我的测试的文件夹结构是在程序包root中有一个“ 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 Code设置中,都可以防止这种抱怨。

2 个答案:

答案 0 :(得分:0)

好吧,如图here所示的相对导入能够解决此问题。因此,就我而言,我应该

# MyModule_test.py

import pytest
from .. import MyModule

答案 1 :(得分:0)

您可以将库路径添加到路径变量中。

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

要使 Pylance 能够正确使用您的库(用于自动完成...),请使用以下步骤:

默认情况下,Pylance 包含工作区的根路径。如果您想包含其他子目录作为导入解析路径,您可以使用工作区的 python.analysis.extraPaths 设置添加它们。

  1. 在 VS Code 中按 +<,> 打开设置。
  2. 输入python.analysis.extraPaths
  3. 选择“添加项目”
  4. 输入库的路径`..'