【发布时间】:2021-03-02 11:26:00
【问题描述】:
我正在尝试从 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
在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 识别导入有效?
【问题讨论】:
标签: python package python-import mypy