运行pylint src命令无法检测到src/collect目录下代码错误问题
问题原因说明
以下是该现象的几种常见原因:
- 缺少包标识文件:pylint默认仅会将包含
__init__.py的目录识别为Python包并递归扫描内部文件。如果你的src根目录下没有空的__init__.py文件,执行pylint src时pylint不会把src识别为待扫描的Python包,也不会递归处理其下的子目录,相当于扫描目标为空,自然返回满分结果。而直接指定pylint src/collect时,只要collect目录下存在.py文件或者本身有__init__.py标识,pylint就会正常扫描该路径下的所有代码,因此检出大量错误。 - 配置排除规则冲突:你项目根目录下的pylint配置文件(比如
.pylintrc、pyproject.toml中pylint相关配置)可能设置了ignore、exclude-patterns等规则,将src目录下的所有子目录默认排除。但当你主动指定具体子目录作为扫描目标时,pylint会忽略全局的排除规则,直接扫描指定路径,因此能正常检出错误。 - 扫描路径不匹配:如果你的pylint配置中设置了
source-roots等和路径相关的参数,执行pylint src时的工作目录和配置预期的路径不匹配,会导致pylint无法定位到src下的子模块,直接跳过扫描返回满分。
你可以通过以下方式快速验证问题:
- 先在src根目录下新建空的
__init__.py文件,重新执行pylint src,查看是否能正常检出collect目录下的错误 - 执行
pylint src -v开启verbose日志,查看pylint实际扫描的文件列表中是否包含collect目录下的代码,确认是否存在漏扫 - 检查pylint配置文件中所有和排除、忽略相关的配置项,确认是否有误排除子目录的规则
内容的提问来源于stack exchange,提问作者Kaspar Poland
相关产品推荐
相关产品推荐

