解决python3.6.0 导入 Matplotlib 报错 AttributeError: ‘version_info‘ object has no attribute ‘__version__‘

好吧,每天都有新问题
在上篇文章提到,为了加快代码的执行速度,我决定重新搭建一个基于tensorflow-gpu 1.12的conda虚拟环境,环境是搭建成功了,测试代码也通过了,但是我自己的代码放上去跑的时候,纷争开始了。

一、AttributeError: ‘version_info’ object has no attribute ‘version

在运行我自己的代码时出现了如下错误
在这里插入图片描述
我的matplotlib版本是3.3.4,从上面可以直观地看出是由于matplotlib和环境不兼容导致的。

1.chatgpt说是因为matplotlib版本太高引起的,所以我试图降低了matplotlib的版本,从3.x降到2.x再到1.x,最后发现没有什么用

conda install matplotlib==2.0.0

2.有些文章说可以改最后报错的文件,也就是这个lib\site-packages\pyparsing_init_.py文件。具体参考这篇帖子,但对我没用
pycharm上python3.6版本安装matplotlib报错‘version_info’ object has no attribute ‘version:
打开函数文件,修改原函数
class version_info(NamedTuple)

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)),
        )

改为

class version_info():
    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
 
    @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)),
        )

3.有篇国外的帖子论坛,我觉得说的比较靠谱,也有其他文章中也提到了类似的解决方案。帖子是这个:unknown version in python library pyparsing
在这里插入图片描述
博客是这个
解决python3 导入 Matplotlib 画图 报错 AttributeError: ‘version_info‘ object has no attribute ‘version
我照着改了,错误变了,而且看起来好像更加严重

二、错误变成了Fatal Python error: _PyInterpreterState_Get(): no current thread state Python runtime state: unknown

找呀找呀找
1.删除虚拟环境,重新建一个虚拟环境,我心里直接一万个***,我这环境搭建了好久的,你说删就删?当然不排除该方法可能是有用的,具体可以参考pycharm报错:python error: _pyinterpreterstate_get(): no current thread state python runtime state

2.找到了两篇文章说把python3.6.0改成3.6.2,考虑到大多数的环境依赖包都是适配于3.6版本的0和2应该没有太大的区别,应该不会对环境有太大的影响,抱着试试的态度,我执行了如下语句

pip install python==3.6.2

然后他就报错了:
在这里插入图片描述
之后我还试了换源,用conda进行安装,均以失败告终
那就用老方法吧,我自己去找.conda安装包,但这个安装包着实是不太好找哇
我先用

conda search python --info

想直接找到3.6.2的安装包下载地址,但奈何终端输出字长有限制,而我又不知道怎么改,所以没能直接获得下载地址
然后,我照着python3.8的下载地址去了清华开源软件镜像站去找https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
结果,因为文件列表太长,直接这样了
在这里插入图片描述
真的会谢

解决办法:最后我还是老老实实去了anaconda的官网去找的https://repo.anaconda.com/pkgs/main/win-64/

直接在网站ctrl+f搜索就可以了
下载带conda后缀名的python3.6.2安装文件
在这里插入图片描述
然后在终端用conda安装,具体安装方法参考上一篇文章win10本机cuda与anaconda虚拟环境目标安装cuda版本不匹配:tensorflow-gpu1.12+CUDA9.0+cuDNN7.1.4
把python换成3.6.2版本之后代码就能正常运行了,开心!!!

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值