PDM搭配pre-commit使用pylint时无法找到__pypackages__下依赖的解决方案问询
可行解决方案
以下两个方案均为全团队通用配置,无需修改本地环境变量,配置跟随代码仓库生效:
方案1:配置pylint启动钩子(无需修改pre-commit配置)
直接在pyproject.toml中添加如下配置,pylint启动时会自动执行代码将依赖目录加入模块搜索路径:
[tool.pylint.MASTER] init-hook = "import sys, os; sys.path.insert(0, os.path.abspath('./__pypackages__/3.11/lib/python3.11/site-packages'))"
注意:将路径中的Python版本号替换为团队统一使用的版本即可。如果不想手动维护版本路径,推荐使用方案2。
方案2:修改pre-commit钩子执行入口(更稳定,推荐优先使用)
pdm run命令会自动加载PDM管理的所有依赖路径,直接修改.pre-commit-config.yaml中pylint钩子的entry配置,让pre-commit通过PDM运行pylint即可:
repos: # 其余钩子配置保持不变 - repo: https://github.com/PyCQA/pylint rev: v2.17.5 # 替换为你使用的pylint版本号 hooks: - id: pylint entry: pdm run pylint # 仅需修改这一行配置
该方案完全复用PDM的路径解析逻辑,不需要手动维护依赖目录结构,哪怕后续PDM版本升级调整依赖存放规则也不会受影响,只需确保团队所有成员都已安装PDM即可。
验证方式
修改配置后执行pre-commit run --all-files测试,pylint即可正常识别__pypackages__下的所有依赖模块。
内容的提问来源于stack exchange,提问作者Mike Williamson
相关产品推荐
相关产品推荐

