You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MyPy报[attr-defined]错误:模块存在属性却提示不存在,代码可正常执行

解决MyPy报attr-defined错误的方案

第一步:修正导入路径的明显错误

你的测试文件test_python_file.py里的导入路径多了一个不存在的schemas层级,实际python_file.py位于src/some/nested/folder/下,正确的导入语句应该是:

from src.some.nested.folder.python_file import attribute_thats_definetely_there

这是导致MyPy报错的核心原因——你导入了一个不存在的模块路径,虽然运行时可能因为环境巧合能执行,但静态检查工具会严格校验路径。

第二步:调整MyPy配置

修改pyproject.toml中的MyPy配置,适配你的常规包结构:

[tool.mypy]
python_version = "3.10"
# 移除namespace_packages=true,你的结构有__init__.py,属于常规包而非命名空间包
allow_redefinition = true
show_error_codes = true
disallow_untyped_defs = true
ignore_missing_imports = true
# 添加src到源码路径,确保MyPy能正确识别src下的模块
paths = ["src"]
  • 移除namespace_packages = true:命名空间包不需要__init__.py,而你的结构中存在该文件,开启这个选项会让MyPy错误识别包结构。
  • 添加paths = ["src"]:明确告诉MyPy将src目录作为源码根,避免模块路径识别混乱。

第三步:验证包结构完整性

检查所有__init__.py文件,确保它们是空文件或者没有影响模块导入的代码——如果__init__.py中有__all__定义,需要确保包含你要导入的属性,不过直接导入模块属性的场景下,空的__init__.py就足够。

执行以上步骤后,重新运行MyPy,错误应该会被解决。

内容的提问来源于stack exchange,提问作者Marthinus Bosman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:05:12