Matplotlib - TypeError: isinstance() arg 2 必须是类型或类型元组

问题描述

我正在尝试使用 matplotlib 库绘制一些图。但是,每当我尝试运行 plt.plot() 时,都会出现错误

if (isinstance(marker,np.ndarray) and marker.ndim == 2 and
TypeError: isinstance() arg 2 must be a type or tuple of types

在库的markers.py 脚本中

尝试执行测试代码时发生此特定错误实例

plt.plot([1,2,3],[1,3])

进入 matplotlib 源代码并将 isinstance(VarName,np.ndarray) 的实例更改为 isinstance(VarName,type(np.ndarray)) 消除了该特定行上的错误,尽管我必须在我相信每次提到 isinstance 都会让它消失。这显然是一个次优的解决方案。

注意,创建一个 numpy 数组并打印 isinstance(array,np.ndarray) 的结果也会给我错误,而打印 isinstance(array,type(np.ndarray)) 的结果正确返回 true,所以我不认为这是 matplotlibs 使用 np.ndarray错误,也不是正确导入 numpy,而是整个环境的持续问题。

我正在使用 conda 在带有 python 3.8.10 的 Windows 机器上运行虚拟环境(该错误也发生在 python 3.7 上),据我所知,numpy 和 matplotlib 都是最新的并且可以正确导入.

我确定这是一个相对基本的错误,虽然我一生都无法弄清楚,但我找不到其他人似乎以前遇到过这个问题。至少不是 matplotlib 或 ndarrays。

解决方法

抱歉,我确实在代码前面的单独脚本中重新定义了 np.ndarray。我没有考虑过这一点,因为我没有意识到新定义可以跨多个脚本保持不变。

定义变量时出现简单错误或使用“=”代替“:”