如何让mypy在没有父包的情况下跳过相对导入

问题描述 投票:0回答:1

假设由于一些丑陋的包装原因,我有一个文件

foo.py
,其中包含:

try:
    from . import bar
except ImportError:
    import bar

假设文件结构不存在

__init__.py
文件,因此预计会引发并捕获
ImportError
。如果我在此代码上运行 mypy,我会收到以下错误:

mypy_eg/foo.py:2: error: No parent module -- cannot perform relative import
Found 1 error in 1 file (errors prevented further checking)

但是,如果我将第 2 行更改为

from . import bar  # type: ignore
,我仍然会收到错误。

我希望此评论能够跳过该错误。事实上,如果我尝试像这样忽略文件中的其他错误,mypy 会很高兴地跳过它们,但由于某种原因不会跳过这个错误。

有人知道这是为什么吗?

python static-analysis mypy
1个回答
0
投票

不完全是答案,因为我仍然不知道如何禁用它,但我找到了导致错误的原因。正如 this issues 中所暗示的,您需要将

__init__.py
文件放在包树的顶部。我创建了一个空的,突然导入错误就消失了。

© www.soinside.com 2019 - 2024. All rights reserved.