mypypath:找不到名为“tzwhere”的模块

2024-10-01 17:31:47 发布

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

我正在学习mypy,我得到的第一个错误是cannot find module。在

我的档案是:

from tzwhere import tzwhere
tzw = tzwhere.tzwhere()
print(tzw)

因为安装了tzwhere包,所以它可以由python运行。但当我在mypy上查到它的时候

^{pr2}$

我如何让它说No library stub file for module 'tzwhere'并处理存根文件而不是{}?在


Tags: nofromimport错误library档案findmodule
1条回答
网友
1楼 · 发布于 2024-10-01 17:31:47

为了让mypy(以及其他兼容pep484的工具)理解如何键入给定的模块,它必须能够在某处找到该模块的存根。在

Mypy(如果我们稍微简化一下)检查存根的两个不同位置:

  1. 它检查typeshed的本地副本,这是标准库和流行的第三方库的类型提示库。(typeshed的副本自动安装在mypy旁边。)
  2. 它检查包本身是否是bundling type hints(例如,包是否是与pep561兼容的包)。在

不幸的是,tzwhere似乎没有做这两件事:我在typeshed上找不到它;它似乎没有绑定类型。因此,mypy将无法使用tzwhere准确键入检查代码。在

您有三个主要选项:

  1. 只需通过在导入中添加# type: ignore注释来抑制错误消息。请注意,这将在代码中引入一些动态性:从tzwhere使用的任何变量/函数都将被假定为Any类型。在
  2. 为模块创建类型存根,将其存储在某个文件夹中,并将MYPYPATH环境变量指向该文件夹。注意,这需要你做一点侦探工作。More details on how mypy finds imports here。在
  3. 如果您想与其他人共享第2步中的工作,请提交一个pull请求以使用您的存根键入,或者向tzwhere本身提交一个pull请求,将其转换为符合pep561的包。在执行这些操作之前,请确保获得库作者的同意。在

相关问题 更多 >

    热门问题