最近在做一个情感分析的项目,项目涉及到结果的可视化,于是选择Matplotlib库来绘制结果。
但是在调用该库时,发现如下报错。

于是顺藤摸瓜,找到了
"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库遇到AttributeError,原因是version_info类缺少__version__属性。通过查看代码,发现该部分用于检测包版本,将其注释掉后,问题解决,项目成功运行。环境为Windows 10,Python 3.6,Matplotlib 3.3.4。

1万+

被折叠的 条评论
为什么被折叠?



