本文记录了博主在遇到由于Zlib版本问题所导致无法在Pycharm中应用import cv
命令的解决过程,亲测安全有效。
首先介绍一下博主遇到的问题,如果有相同情况可以借鉴本文的解决方法,如果情况不同,有可能这么做没有效果,但是可以保证安全(不会毁掉系统)。
基本情况
- 在终端python环境下运行
import cv2
命令正常(opencv-python安装正确,如果这一步有问题的,可以检查一下是否正确安装了opencv-python包) - 在Pycharm中,Anaconda环境下(所有环境),运行
import cv2
命令出错。注意,这里是对于debug和run而言,如果在Pycharm中的Terminate环境下运行,仍然是可以import成功的。
具体解决方法
- 首先在终端下面运行
conda list
,检查电脑中所安装的Zlib版本。博主的是1.2.11,但是根据报错,cv2要求的是1.2.9,因此出现了版本不一致的情况; - 重新安装Zlib,具体步骤为:
1 wget http://www.zlib.net/fossils/zlib-1.2.9.tar.gz
2 tar -xvf zlib-1.2.9.tar.gz
3 cd zlib-1.2.9
4 mkdir build
5 cd build
6 cmake ..
7 make
8 make install
这里在哪个目录里面安装可以根据个人情况来,我是安装在平时安装软件的文件夹下面了,应该是没有影响。
- 之后,按照如下步骤替换系统原来的文件。在运行命令之前,一定要先备份原来的libz.so.1文件,以免在操作过程中出现失误,产生其他影响。具体备份可以用
sudo mv
命令重命名原来的文件或者是移动到其他文件夹下面。下面命令中的-f
是强制创建软连接的意思,也就是会覆盖原来的文件,不会有提示。
cd /lib/x86_64-linux-gnu
ln -s -f /usr/local/lib/libz.so.1.2.9/lib libz.so.1
之后,重启Pycharm问题就可以解决了。
附言:博主遇到了修改之后断网的问题,但是不知道是因为用了lantern还是这个操作造成的,但是在重启电脑之后就正常了。断网期间也尝试用回原来的libz.so.1文件,但是没有恢复网络,所以应该不是这个原因。如果大家出现什么问题,只需要将备份的libz.so.1文件还原即可。