python环境问题--import matplotlib.pyplot as plt报错
python环境配置好后,刚开始没问题,过几天用vs code写python代码的时候,突然导matplotlib包报错:DLL load failed:找不到指定的模块。
首先定位报错的具体代码,发现是导入matplotlib包报错,去掉那条命令后程序正常执行,然后继续尝试,import matplotlib没有问题,但是import matplotlib.pyplot会报错,刚开始以为是vs code配置python或者opencv环境问题,查看python解释器没有问题,该装的python扩展包也装上了的。然后尝试直接在jupyter中和cmd窗口中执行命令,一样报错:DLL load failed:找不到指定的模块。
我电脑里面有两个python版本,一个是python37,一个是python36,现在用的是36版本,尝试把环境变量path路径改了后还是报错。确定跟IDE应该没有问题,也不是IDE环境配置的问题,根据网上搜索的解决方法尝试如下:
1 首先确定matplotlib包成功安装,可以用pip list查看,或者直接pip install matplotlib(如果也有问题,可以尝试卸载重装或用其他版本),我查看之后确定matplotlib成功安装(numpy库也没有问题)。
2 有一个说法是堆栈溢出,运行python -m pip install msvc-runtime命令即可,尝试后成功安装了msvc-runtime,重启后仍然报错,应该不是这个原因。
3 可能是版本不兼容导致,python的版本和matplotlib版本不兼容,我的python版本是3.6.4,直接用的anaconda,查看的matplotlib版本是3.3.4,可能不兼容,只能试一下,进入https://www.lfd.uci.edu/~gohlke/pythonlibs/. 这个网站直接下载python36对应的matplotlib版本,
可以选的有几个(cp36就是python3.6版本),我选择了3.2.2版本,直接下载下来,然后把原来的matplotlib卸载了(pip uninstall matplotlib即可),然后重新pip安装这个版本。重启环境后,仍然报错,然后查看matplotlib与pillow有联系,那pillow的版本应该也要兼容才行,我当前的pillow版本是8.3.1,官网上面没有看到,python36对应的pillow版本可用的是8.4.0,然后把当前的pillow卸载后重新安装8.4.0版本,再次重启后执行import matplotlib.pyplot,终于成功了,没有报错,感谢神通广大的网友。
4 还有一种说法,在线pip install numpy时因为在线下载numpy库中缺少DLL,在加州大学非官方库连接中MKL版本解决了这个问题,下载Numpy+MKL 版本 注意本机Python版本,当时还想着下载这个库安装上再看看是否可以解决问题,但是下载真的太慢了,第三种方式已经解决了问题就没再尝试。
最近又遇到一个比较奇怪的问题:jupyter notebook运行不了,点击run等按钮没有反应,弹出连接失败的提示。
网上查询解决方法,大概率是tornado版本的问题,需要重新配置下tornado版本。查看自己电脑中tornado的版本(conda list),发现是6.0.1的版本,超过6的版本可能有问题。卸载该版本:pip uninstall tornado ,然后pip install tornado==5.1.1,重新打开jupyter,可以运行了。
注意:vscode的注释有中文字符编译会报错,可以在文件开头加上 # coding=gbk,将其转换为utf-8。
注意:jupter notebook中输出的图片不显示可以在文件开头加上 %matplotlib inline ,matplotlib绘制的图像就可以正常显示。