opencv4.5.0与pyqt5产生冲突
更新(2021.5.31)
突然发现pip3已经更新了opencv-python==4.5.0,可以直接pip3 install opencv-python
了.
状况简介
下面是原始的环境,因为某些原因所以需要把opencv-python==4.2.0.34
换成4.5.0版本的,查了下pip目前只支持4.4.0,所以去conda查了下,发现conda-forge有4.5.0版本的,于是卸载了opencv-python,使用conda install -c conda-forge opencv==4.5.0
(这里出现错误的话可以参考我前面的博客)conda安装各种包出现报错。
之后就两个包冲突报错了,报错就不放了。
altgraph==0.17
APScheduler==3.6.3
bitstring==3.1.7
certifi==2020.4.5.1
chardet==3.0.4
dnspython==1.16.0
easydict==1.9
eventlet==0.25.2
future==0.18.2
greenlet==0.4.15
hazelcast-python-client==3.12.3
httprequests==0.3
idna==2.9
iso8601==0.1.12
monotonic==1.5
opencv-python==4.2.0.34
pika==1.1.0
protobuf==3.11.3
PyInstaller==3.6
PyQt5==5.12.3
PyQt5-sip==12.7.2
pyserial==3.4
pytz==2020.1
PyYAML==5.3.1
requests==2.23.0
six==1.14.0
sysv-ipc==1.0.1
tzlocal==2.1
urllib3==1.25.9
解决方案①
如果不是必须4.5.0版本的opencv的话,可以尝试使用opencv-python-headless包pip install opencv-python-headless
解决方案②
换用conda下的pyqt
如果像我一样需要opencv==4.5.0支持的话,经过查询,可以直接考虑放弃使用pip安装的PyQT5,去使用conda安装的pyqt,这样两个包确实没有发生冲突。前两条为卸载原先的PyQT5,如果没有可以忽略。
# 卸载pip安装的pyqt5
(base) adocir@adocir:~$ pip uninstall pyqt5
(base) adocir@adocir:~$ pip uninstall pyqt5-sip
# 安装conda下的pyqt
(base) adocir@adocir:~$ conda install pyqt
(base) adocir@adocir:~$ conda install -c conda-forge opencv==4.5.0
制作requirements.yml
可以说我测试的时候没出现冲突问题,而部署的时候出现了,归根结底就是我直接使用了pip install -r requirements.txt
在我电脑上测试,但是这样子的话安装环境包并不会给我分辨其中的环境包到底是用的pip安装还是conda下的哪些channel安装的包。所以还是应该直接将使用的环境的虚拟环境给原模原样安装过来。所以我们应该使用requirements.yml,首先从部署的地方把conda环境生成为requirements.yml文件
(base) 隐藏:~$ conda env export > requirements.yml
接着将该文件下载到自己的电脑,然后到文件目录下,创建test虚拟环境并将requirements.yml克隆到test虚拟环境下
(base) adocir@adocir:~$ conda env create -f requirements.yml -n test
requirements.yml里包含了环境包的channel,不用担心安装错环境包了。