mypy配置项mypy_path不生效无法识别stubs存根目录问题求助
问题根因
- mypy默认从当前执行命令的工作目录查找配置文件,你在
mypy_minrepro的上级目录执行命令时,mypy无法自动识别到子目录内的mypy.ini - 项目根目录
mypy_minrepro未被加入mypy的模块搜索路径,导致既找不到项目内的untyped模块,也加载不到stubs目录的存根文件
修复方案(无需调整现有目录结构)
方案一:切换工作目录执行(推荐,无需修改任何配置)
直接进入mypy_minrepro目录后执行mypy命令,mypy会自动加载同目录下的mypy.ini,同时当前目录会被自动加入模块搜索路径:
cd mypy_minrepro mypy -m test.main
方案二:保留在上级目录执行,显式指定配置和搜索路径
方式1:仅修改执行命令,不改动配置
执行时主动传入配置文件路径和项目根目录的Python路径:
# Windows 环境 mypy --config-file mypy_minrepro/mypy.ini --pythonpath mypy_minrepro -m mypy_minrepro.test.main # 类Unix环境 mypy --config-file mypy_minrepro/mypy.ini --pythonpath mypy_minrepro -m mypy_minrepro.test.main
方式2:修改mypy.ini适配上级目录执行场景
修改mypy_minrepro/mypy.ini的路径配置,适配从上级目录执行的场景:
[mypy] mypy_path = mypy_minrepro/test/stubs:mypy_minrepro
执行时仅指定配置文件即可:
mypy --config-file mypy_minrepro/mypy.ini -m mypy_minrepro.test.main
预期执行结果
两种方案都能让mypy正确加载stubs的类型定义,抛出期望的类型错误:
error: Argument 1 to "foo" has incompatible type "str"; expected "float" [arg-type]
内容的提问来源于stack exchange,提问作者Greedo
相关产品推荐
相关产品推荐

