微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pylance 错误地将 numpy.pi 输入为“Module("numpy.testing") | Type[NoseTester]”

如何解决Pylance 错误地将 numpy.pi 输入为“Module("numpy.testing") | Type[NoseTester]”

当我注意到 Pylance 正在输入 numpy.pi 作为 numpy.testing 的成员或类型为 NoseTester 时,我正在向函数调用添加类型提示

即使我在 python 命令行中得到 type(np.pi) == float,这个示例代码

import numpy as np

def foo(val: float):
    print(val)

foo(np.pi)

foo(np.pi)

上给出以下错误消息
pi: Module("numpy.testing") | Type[NoseTester]
Argument of type "Module("numpy.testing") | Type[NoseTester]" cannot be assigned to parameter "val" of type "float" in function "foo"
  Type "Module("numpy.testing") | Type[NoseTester]" cannot be assigned to type "float"
    Type "Module("numpy.testing")" cannot be assigned to type "float"
    "Type[type]" is incompatible with "Type[float]"PylancereportGeneralTypeIssues

对于以下内容,我收到了相同的错误消息(对于 float 以外的类型):numpy.pinumpy.enumpy.floornumpy.ceil、{{1} }、numpy.sinnumpy.cosnumpy.tannumpy.sqrt

但是,这些浮点数/函数不会导致问题:numpy.expnumpy.Infnumpy.Nannumpy.roundnumpy.real、{{1 }}。

我在跑步:

  • Numpy:1.19.5
  • Pylance:2021.5.3

有人知道这是为什么和/或如何解决问题吗?

编辑 1:这似乎更像是 Pylance 问题,所以我创建了 microsoft/pylance-release#1340

解决方法

我真的很傻——我只需要将 Numpy 更新到 1.20 版。正如 on GitHub by Jake Bailey 所指出的,Numpy 不包含 1.20 之前的输入信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。