Matplotlib库在使用时遇到AttributeError: ‘NoneType‘ object has no attribute ‘__version__‘问题解决方案

 最近在做一个情感分析的项目,项目涉及到结果的可视化,于是选择Matplotlib库来绘制结果。

但是在调用该库时,发现如下报错。

Matplotlib库在使用时遇到AttributeError: ‘NoneType‘ object has no attribute ‘__version__‘问题解决方案_第1张图片

 于是顺藤摸瓜,找到了

"C:\Users\Lenovo\AppData\Local\Programs\Python\Python36\lib\site-packages\pyparsing\__init__.py", line 129

错误原因是version_info类中找不到__version__这个属性。

大概浏览了一下version_info这个类,确实没有找到这个属性

class version_info(NamedTuple):
    major: int
    minor: int
    micro: int
    releaselevel: str
    serial: int

    @property
    def __version__(self):
        return "{}.{}.{}".format(self.major, self.minor, self.micro) + (
            "{}{}{}".format(
                "r" if self.releaselevel[0] == "c" else "",
                self.releaselevel[0],
                self.serial,
            ),
            "",
        )[self.releaselevel == "final"]

    def __str__(self):
        return "{} {} / {}".format(__name__, self.__version__, __version_time__)

    def __repr__(self):
        return "{}.{}({})".format(
            __name__,
            type(self).__name__,
            ", ".join("{}={!r}".format(*nv) for nv in zip(self._fields, self)),
        )

但是报错的127行的参数有特点

__version_info__ = version_info.__init__(3, 0, 7, "final", 0,0)

恰好是version_info类中5个变量数据类型

major: int
minor: int
micro: int
releaselevel: str
serial: int

因为我不知道这个包的的作者的意图(懒得分析),但是解决问题要紧。

所以我将这五个变量作为参数封装进了一个函数中

def __init__(self, major: int, minor: int, micro: int, releaselevel: str, serial: int):
        self.major = major
        self.minor = minor
        self.micro = micro
        self.releaselevel = releaselevel
        self.serial = serial

并把127行 129行的调用函数改了

但是又报出了更多的错误

懒得去分析代码了

直接分析代码用途

纵观整个文件,这一坨是在主要类和函数之前写的。

所以结合

文件中

_check_versions()

 分析可得这坨报错的代码是用来检测包的版本问题的

去掉应该也无妨

于是

# _check_versions()

 把他注释掉!!!!!

然后项目就成功丝滑的开始运行了.....

环境:

windows 10

python 3.6

matplotlib 3.3.4
 

你可能感兴趣的:(matplotlib,python,numpy)