当前位置:   article > 正文

解决python3.6.0 导入 Matplotlib 报错 AttributeError: ‘version_info‘ object has no attribute ‘__version__‘_python3.6无法导入matplotlib.pyplot

python3.6无法导入matplotlib.pyplot

好吧,每天都有新问题
在上篇文章提到,为了加快代码的执行速度,我决定重新搭建一个基于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
  • 1

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)),
        )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

改为

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)),
        )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

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
  • 1

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

conda search python --info
  • 1

想直接找到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版本之后代码就能正常运行了,开心!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/884286
推荐阅读
相关标签
  

闽ICP备14008679号