conda下 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,不用担心安装错环境包了。

参考

anaconda
pip conda 和requirement.txt,requirements.yml安装与生成操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值