配置pre-commit添加本地自研包后,pyright仍报导入错误求解决
解决pre-commit pyright钩子无法识别本地自研包的问题
问题分析
pre-commit的每个钩子都会在独立的隔离虚拟环境中运行,你本地全局/项目虚拟环境里安装的package1、package2不会自动被钩子环境识别。你当前在additional_dependencies里用[.package1]的写法不符合pip本地包安装的格式,导致钩子环境没正确安装这两个自研包,pyright自然找不到导入的符号。
解决方案
方案1:修正additional_dependencies的本地包路径写法
把additional_dependencies里的[.package1]、[.package2]改成pip能识别的本地相对路径格式:
repo: https://github.com/RobertCraigie/pyright-python rev: v1.1.316 hooks: - id: pyright additional_dependencies: [matplotlib, pytest, './package1', './package2']
这样pre-commit在初始化钩子环境时,会自动用pip安装这两个本地包,pyright就能识别到包内的导入。
方案2:通过pyright配置文件指定额外路径
如果方案1无效,可在项目根目录创建pyrightconfig.json文件,手动告诉pyright去哪里找这两个自研包:
{ "extraPaths": ["./package1", "./package2"] }
这个配置会让pyright扫描指定路径下的Python包,无需在钩子的依赖里重复安装。
最后验证
修改配置后,先清理pre-commit的旧钩子环境:
pre-commit clean
再运行钩子测试:
pre-commit run --all-files
内容的提问来源于stack exchange,提问作者thmo
相关产品推荐
相关产品推荐

