先泼盆冷水,这个问题比较棘手,有的能通过重装opencv相关包修复,有的可能还是直接换一个没问题的环境比较快……
我最后是没有解决的,折腾了几个小时后,还是听同事的话,把docker镜像重启了,幸好能恢复到原来的环境。
这里记录下我的尝试吧。
1、出现问题的原因
我好像只是下了个comfyui插件,当然也可能是我其他操作
2、初步尝试,如果你运气好的话,就能解决了
同事的经验,把opencv-contrib-python卸载,opencv-python-headless重装,可以尝试把opencv-python相关的都卸载重装,但是对我来说不管用
3、进一步排查错误
运行py文件后只出现Segmentation fault (core dumped)而不知道具体哪里报错,可以加入-X faulthandler进行排查
python -X faulthandler your_script.py
然后就有报错
Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.ran
dom._pcg64, numpy.random._sfc64, numpy.random._generator, torch._C, torch._C._fft, torch._C._linalg, torch._C._nested, torch._C._nn, torch._C._sparse, torch._C._special, PIL._imaging, yaml._yaml, psutil._psutil_linux, psutil._psutil_posix (total: 24)
查了下看到这个文章:Opencv causes debug-enabled python interpreter to abort with a refcount error - Python - OpenCV
应该是opencv的问题,直接python,import cv2,可以看到报错
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
解决方法:
apt-get install libgl1&& apt-get install libglib2.0-0
然后尝试下启动python.exe,试一下cv2是不是正常
import cv2
cv2.imread("xx.png")
刚开始imread都报错,我又重装了下opencv-python,再次尝试不报错了。
import后不报错了,但是启动时依旧报错……
然后继续按这个帖子尝试gbd排查,如果没有这个包就先apt-get安装下:
python代码出现segmentation fault和 Process finished with exit code 139_fatal python error: segmentation fault-CSDN博客
然后会出现下面这种
可能是lib包出问题了,实在不知道怎么搞了,还是直接换个新环境吧。
用坏了的环境,如果有可以替换的新环境,那就扔掉得了……