6

我使用 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). 这是有道理的,但是有什么方法可以解决这个问题,无论是在 pyright 还是在 Visual Studio Code 设置中,以阻止这种抱怨?

4

2 回答 2

3

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

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

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

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

  1. 在 VS Code 中按 +<,> 打开设置。
  2. 输入python.analysis.extraPaths
  3. 选择“添加项目”
  4. 输入你的图书馆的路径'..'
于 2021-04-13T07:04:33.980 回答
2

好的,如此处所示的相对导入能够解决这个问题。所以在我的情况下,我应该有

# MyModule_test.py

import pytest
from .. import MyModule
于 2019-11-29T21:39:29.957 回答