【问题标题】:Fixing 'Import [module] could not be resolved' in pyright在 pyright 中修复“无法解析导入 [模块]”
【发布时间】:2020-03-25 06:55:13
【问题描述】:

我使用 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 设置中,以阻止这种抱怨?

【问题讨论】:

    标签: python visual-studio-code pytest pyright


    【解决方案1】:

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

    # MyModule_test.py
    
    import pytest
    from .. import MyModule
    

    【讨论】:

    • 我有同样的问题,但我不能使用你所拥有的。我的 pytest 测试文件中有这样的语句:from quendor.zmachine.header import StoryHeader 这很好,因为 PyTest 可以处理导入。 Pyright 拒绝找到它。不幸的是,相对导入根本不起作用。我唯一的解决方案是禁用 Pyright。
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-24
      • 2019-06-22
      • 2020-06-21
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多