gpt4 book ai didi

python - 兄弟包导入和mypy "has no attribute"错误

转载 作者:行者123 更新时间:2023-12-04 02:29:51 25 4
gpt4 key购买 nike

我正在尝试从 Python 中的同级包中导入模块;按照 this answer 中的说明进行操作.我的问题是导入工作...但是 mypy是说这是一个糟糕的进口。我正在寻求了解 mypy 报告错误的原因以及如何修复它。
目录结构/代码
这是我用python -m pip install -e .成功安装的模块.我知道它已安装,因为它在我运行时列出 pip freeze , 项目根目录在 sys.path当我打印出来的时候。

mypackage
├── mypackage
│   ├── foo
│   │   ├── __init__.py
│   │   └── db.py
│   ├── bar
│   │   ├── __init__.py
│   │   └── model.py
│   └── py.typed
└── setup.py
在 db.py 中:
from mypackage.bar import model
在模型.py 中:
class MyClass:
# implementation irrelevant
错误信息
当我运行 mypy ( mypy mypackage 从项目基目录)时,我收到以下错误:
mypackage/foo/db.py:7: error: Module 'mypackage.bar' has no attribute 'model'
让我感到困惑的是,当我打开 IDLE 时,以下导入/运行正常:
>>> from mypackage.bar import model
>>> model.MyClass
<class 'mypackage.bar.model.MyClass'>
我的问题
当导入实际有效时,为什么 mypy 会在此处显示错误?我怎样才能让 mypy 认识到导入有效?

最佳答案

使用 --namespace-packages 运行 mypy标志使检查运行没有错误,这指出了实际问题:./mypackage/mypackage/__init__.py不存在,导致 mypy不正确地追求进口。 Python 正在工作,因为在 3.3+ 中,支持命名空间包,但 mypy 需要一个标志来专门检查这些包。
因此,我的整体解决方案是添加所需的 __init__.py文件。

关于python - 兄弟包导入和mypy "has no attribute"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64905873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com