Django搭配Mypy使用时无法读取mypy.ini配置选项的问题求解
核心逻辑说明
mypy.api.run的入参列表完全等价于命令行执行mypy时传入的所有参数,你之前传入[settings.BASE_DIR]本质是给mypy指定了要执行类型检查的扫描路径,这是mypy运行的必填参数,所以不传或者传空列表都会运行失败。
配置不生效原因
mypy默认会从执行命令时的当前工作目录往上查找配置文件,你把逻辑放在apps.py的ready函数中运行时,Django启动的工作目录不一定是项目根目录,所以找不到你放置的mypy.ini,配置自然不生效。
解决方案
你需要在参数列表中显式指定配置文件路径,同时保留扫描路径参数,示例代码如下:
from pathlib import Path from django.conf import settings import mypy.api # 拼接参数列表:先指定配置文件,再指定扫描路径 mypy_args = [ "--config-file", str(Path(settings.BASE_DIR) / "mypy.ini"), str(settings.BASE_DIR) ] results = mypy.api.run(mypy_args)
如果你需要额外传入其他配置参数,直接按命令行参数的格式追加到mypy_args列表即可,额外传入的参数优先级会高于mypy.ini中的配置,和命令行执行逻辑完全一致。
内容的提问来源于stack exchange,提问作者miller the gorilla
相关产品推荐
相关产品推荐

