更新(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安装与生成操作

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐