You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:Neovim中Pyright无法识别Python导入的解决方法

Python导入与Pyright报错问题解决

问题背景

Pyright(Neovim中使用的Python代码检查工具)提示错误:

Import "subdir1.test1" could not be resolved [Pyright: reportMissingImports]

错误出现在subdir1/test2.py的导入语句行,项目目录结构如下:

__init__.py
main.py
subdir1
  __init__.py
  test1.py
  test2.py

所有__init__.py文件为空,各文件代码:

  • main.py
from subdir1.test2 import print_message_2
print_message_2()
  • test1.py
def print_message():
    print(__name__)
  • test2.py
from subdir1.test1 import print_message # 错误行
def print_message_2():
    print_message()

代码实际可正常运行,但Pyright持续抛出上述linting错误,需解决该问题,确保打开test2.py时不再报错。

解决方案

1. 使用相对导入

由于test1.py和test2.py处于同一子目录下,改用相对导入是最直接的规范做法:
修改test2.py的导入语句为:

from .test1 import print_message

相对导入通过.指代当前目录,Pyright能正确识别同目录模块,同时Python运行时也能正常解析(运行main.py时项目根目录会自动加入Python路径)。

2. 配置Pyright识别项目根目录

若不想修改代码,可通过配置文件让Pyright将项目根目录纳入搜索路径:
在项目根目录创建pyrightconfig.json文件,写入以下内容:

{
  "pythonPath": "python3",
  "rootPath": ".",
  "extraPaths": ["."]
}

此配置会告知Pyright将当前目录作为项目根,并添加到模块搜索路径中,从而正确解析subdir1.test1这类绝对导入。

3. 手动添加项目根到Python路径(临时方案)

不推荐用于生产代码,仅适合临时调试:
在test2.py开头添加代码,将项目根目录手动加入Python路径:

import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent))

该方法通过脚本动态修改路径,能让Pyright和Python运行时都找到目标模块,但长期维护性较差。


内容的提问来源于stack exchange,提问作者dekuShrub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:30:47