赞
踩
好吧,每天都有新问题
在上篇文章提到,为了加快代码的执行速度,我决定重新搭建一个基于tensorflow-gpu 1.12的conda虚拟环境,环境是搭建成功了,测试代码也通过了,但是我自己的代码放上去跑的时候,纷争开始了。
在运行我自己的代码时出现了如下错误
我的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‘
我照着改了,错误变了,而且看起来好像更加严重
找呀找呀找
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/
结果,因为文件列表太长,直接这样了
真的会谢
直接在网站ctrl+f搜索就可以了
下载带conda后缀名的python3.6.2安装文件
然后在终端用conda安装,具体安装方法参考上一篇文章win10本机cuda与anaconda虚拟环境目标安装cuda版本不匹配:tensorflow-gpu1.12+CUDA9.0+cuDNN7.1.4
把python换成3.6.2版本之后代码就能正常运行了,开心!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。