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 之前的输入信息。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...