gpt4 book ai didi

python - 错误 : Skipping analyzing 'flask_mysqldb' : found module but no type hints or library stubs

转载 作者:行者123 更新时间:2023-12-03 15:37:53 28 4
gpt4 key购买 nike

我正在使用 Python 3.6 和 flask .我用了flask-mysqldb连接到 MySQL ,但每当我尝试运行 mypy在我的程序中,我收到此错误:

Skipping analyzing 'flask_mysqldb': found module but no type hints orlibrary stubs.


我尝试运行 mypy带有标志 ignore-missing-importsfollow-imports=skip .然后我没有收到错误。为什么我会收到此错误?
如何在不添加任何其他标志的情况下解决此问题?

最佳答案

您收到此错误是因为 mypy 并非旨在尝试对您尝试导入的每个模块进行类型检查。这主要是出于三个原因:

  • 您尝试导入的模块可能以无法进行类型检查的方式编写。例如,如果模块执行类似 my_list = []在全局范围内,mypy 将要求类型提示,因为它不知道该列表应该包含什么。

    这类错误超出了使用图书馆的人的控制范围,因此可能会在各处发送垃圾邮件,这将是令人讨厌和破坏性的。
  • 即使您尝试干净地导入类型检查的库模块,如果它不使用类型提示,您也不会从尝试将它与 mypy 一起使用中获得太多好处。如果库是动态类型的,mypy 可以静默接受实际上在运行时不进行类型检查的代码。

    这可能会让人们感到惊讶/默默地做错事通常是个坏主意。相反,您会收到明确的警告。
  • 并非所有模块都是用 Python 编写的——有些模块实际上是 C 扩展。 Mypy 无法分析这些模块,因此必须实现一些忽略模块的机制。

  • 如果您没有收到此错误,这意味着以下五件事之一:
  • Typeshed 中已经存在您库的类型提示。 ,它与 mypy 预先捆绑在一起。 Typeshed 主要包含标准库和少数流行的 3rd 方库的类型提示。
  • 该库已经在使用类型提示,并声明它希望被 mypy 分析和类型检查。这是通过包含一个特殊的 py.typed 来完成的。包中的文件使其成为 PEP 561 compatible .
  • 您已经安装了第 3 方“仅 stub ”软件包。这个包可以与库一起安装,让人们无需修改库本身就可以提供类型提示。例如,django-stubs包包含与 PEP 561 不兼容的 Django 库的类型提示。
  • 您已将 mypy 配置为使用您自己的自定义 stub 。也就是说,您基本上已经创建了自己的本地“仅 stub ”包并告诉 mypy 使用它。
  • 您已决定抑制错误并接受库现在是动态类型的事实——例如,通过使用您找到的命令行标志或添加 # type: ignore到进口。

  • 有关如何处理此错误的更多详细信息,请参阅 mypy docs on dealing with missing type hints from 3rd party libraries .

    关于python - 错误 : Skipping analyzing 'flask_mysqldb' : found module but no type hints or library stubs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60716482/

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