为什么mypy状态为“找到了模块但没有类型提示…”而实际上存在类型提示?

2024-10-16 20:46:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从包含许多包和模块的目录中导入模块的服务。该目录中的大多数模块都带有类型提示注释。

现在,我想用mypy检查服务中的类型提示。但由于某些原因,mypy无法识别该目录中的提示,我收到了许多错误,如:

service/some.py:16: error: Skipping analyzing "directory.some_package.some_arbitrary_module": found module but no type hints or library stubs

我还尝试运行stubgen some_arbitrary_module.py,并将生成的some_arbitrary_module.pyi文件放在同一个目录中,以检查some_arbitrary_module.py中的类型提示是否有问题。。但我也犯了同样的错误

是否还有其他原因会导致这种错误


Tags: 模块py目录类型错误service原因error
1条回答
网友
1楼 · 发布于 2024-10-16 20:46:26

从注释中可以看出,您正在导入的模块来自可安装的依赖项。如果要使用该依赖项的类型提示,它需要每个PEP 561 - Packaging Type Information有一个py.typed

Package maintainers who wish to support type checking of their code MUST add a marker file named py.typed to their package supporting typing.

以下是mypy文档中的更多信息Creating PEP 561 compatible packages

For example, here is a typical directory structure:

setup.py package_a/
    __init__.py
    lib.py
    py.typed

The setup.py file could look like this:

from distutils.core import setup

setup(
    name="SuperPackageA",
    author="Me",
    version="0.1",
    package_data={"package_a": ["py.typed"]},
    packages=["package_a"]
)

相关问题 更多 >