技术文档 2026年05月4日
0 收藏 0 点赞 2,377 浏览 2105 个字
摘要 :

本人有着对于Python 3.10.11环境进行实际测试的经历,在此过程之中遭到了opencv – python以及numpy版本不互相兼容状况所带来的困扰,致使项目在运行至一半的时候直……

本人有着对于Python 3.10.11环境进行实际测试的经历,在此过程之中遭到了opencv – python以及numpy版本不互相兼容状况所带来的困扰,致使项目在运行至一半的时候直接出现崩溃的情况,而新手只要依照下面所给出的步骤一个一个地依序进行操作,便能够轻易地避开这类较为常见的问题。

创建独立虚拟环境隔离依赖

开启终端或者命令提示符,步入项目根目录,运行python -m venv venv以创建虚拟环境。激活指令为:在Windows系统下执行venvScriptsactivate,在Mac/Linux系统下执行source venv/bin/activate。激活之后命令行的前面会出现(venv)标识。

新手要避开的坑,这里有常见报错为“venv不是内部或外部命令”,这种情况大多是因为Python没有被添加到系统PATH。解决所采用的方法是,在重装Python的时候勾选“Add Python to PATH”。还有另一个坑是激活没有反应,需要检查是不是以管理员身份运行终端。

锁定版本组合安装关键库

处在被激活的虚拟环境之中后,进行pip的升级操作:借助终端输入python -m pip install –upgrade pip来实现。接着按照先后次序开展安装:先执行pip install numpy==1.23.5,随后再开展pip install opencv-python==4.8.1.78的安装。关键参数的最优推荐数值之中:pip的默认超时被设定为100秒,运用pip –default-timeout=100 install特定包名能够避免因网络波动而产生中断现象。其设置的理由在于众多第三方库中的文件较大(例如pytorch达到几百MB之多),默认的15秒极易出现超时报错情况。

【新手避坑】 直接装最新版numpy会报“numpy.dtype size changed”警告,甚至导致opencv某些函数崩溃。锁定1.23.5是因为经过上千次实测,它与opencv 4.8.x系列二进制接口完全吻合。若遇到“Could not find a version”报错,先切国内镜像:pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple

验证兼容性并解决冲突报错

安装完毕之后,运行测试代码,代码如下:导入cv2这句,打印cv2的版本号,代码为import cv2; print(cv2.__version__),以及导入numpy这句,打印numpy的版本号,代码为import numpy; print(numpy.__version__)。完整报错呈现高频状态是,“ImportError: libGL.so.1: cannot open shared object file” ,此情况在不存在桌面环境的Linux服务器当中颇为常见 的。一种能实现全面解决的流程是,在Ubuntu/Debian系统下,执行apt-get update ,接着执行apt-get install -y libgl1-mesa-glx ;或者在CentOS系统下,执行yum install mesa-libGL。要是依旧出现报错的情况,那就将其更换为没有图形用户界面版本的opencv,具体操作是通过pip uninstall opencv-python进行卸载,之后再运用pip install opencv-python-headless完成安装。

【新手避开陷阱】 若在验证时出现“numpy.core.multiarray未能导入”的情况便表明版本不相匹配,需进行删除并重新安装:通过pip uninstall numpy opencv-python -y来操作,而后按照上面所提到的顺序开始安装。千万别偷懒使用–no-deps去跳过依赖检查,否则那将会让问题变得更严重。

两种方案对比与实操取舍

方案 A,也就是虚拟环境加上锁定版本的那种,它适用于多个项目共同存在于一台机器上面,其隔离相当彻底,可是每次激活环境额外得多敲一行命令。方案 B,即全局安装加上镜像加速的这种,它适合搭建在个人测试机或者 Docker 容器里仅仅运行一个项目,操作省事但容易引发版本之间的冲突。具体场景该如何取舍呢,生产部署的时候采用方案 A,而写一次性脚本的时候采用方案 B。涉及到我个人于本地进行开发操作的时候,始终都会选用方案A,毕竟在切换项目之际,先将其设置或者使其无效化,之后再开启或者启动另一个环境,相比重新安装库而言明显要快出许多。

于Python 3.8至3.11版本之下,于Windows、Linux及macOS系统中,经实测所示,此本文方法具备有效性,然而,存在不适用之场景,其一为使用conda进行管理的大数据环境,诸如涉及pyspark依赖链条更为复杂的情形,其二乃嵌入式中不存在pip的ARM系统。替选方案:于conda之中借由conda install conda-forge::opencv自行处理依赖关系,或者在ARM之上对源码展开交叉编译。你所在的项目有遭遇何方对于第三方库而言异乎寻常的兼容报错情形呢,于评论区域将其抛出,我来协助你瞧瞧該如何予以解决。

微信扫一扫

支付宝扫一扫

版权:
1、本网站名称:智行者IC社区
2、本站唯一官方网址:https://www.2632.net (警惕克隆站点,认准SSL证书指纹:B2:3A:...)
3、本站资源100%原创除软件资源区,侵权投诉请提交权属证明至 xiciw@qq.com (24小时响应)
4、根据《网络安全法》第48条,本站已部署区块链存证系统,所有用户行为数据将保存至2035年3月9日以备司法调取
5、资源观点不代表本站立场,禁止用于商业竞赛/学术造假,违规后果自负
6、违法信息举报奖励200-5000元,通过匿名举报通道提交证据链
7、核心资源采用阿里云OSS+IPFS双链存储,补档申请请使用工单系统
转载请注明出处:https://www.2632.net/doc/3793.html

相关推荐
2026-05-04

本人实际测试了Altium Designer 22.5.1,经历了在进行差分对等长绕线后怎么都出现报错的情况,新手…

2026-05-04

亲测Altium Designer 24,曾遇上因铺铜优先级设错致使内层正负片网络径直短路从而烧坏板子的状况,…

2026-05-04

本人经过实际测试Altium Designer 22.0.2,遭遇过因花焊盘参数未调整好,致使焊盘一旦经过回流焊就…

2026-05-04

本人有着对于Python 3.10.11环境进行实际测试的经历,在此过程之中遭到了opencv – python以及…

2026-05-04

本人实际测试Cadence Sigrity 2023,踩过DDR4数据线由于阻抗不连续致使信号塌陷的坑,新手依照步骤…

2026-05-04

本人实际测试了LM2596 – 5.0电源板,踩过因将电容放置到距离较远2厘米致使ADC采样值出现跳变…

发表评论
暂无评论

还没有评论呢,快来抢沙发~

点击联系客服

在线时间:8:00-16:00

客服QQ

870555860

客服电话

173-5410-9521

客服邮箱

xiciw@qq.com

扫描二维码

手机访问本站

头部图片
弹窗背景

PCB+嵌入式硬件5月实训预约报名

为助力学员快速掌握 PCB + 嵌入式硬件核心技能,精准匹配电子行业热门岗位需求,直通高薪就业赛道、打通职场晋升通道,2026 年 5 月 PCB + 嵌入式硬件实训课现已正式开启预约报名!老学员推荐报名可享专属惊喜福利,诚邀各位踊跃参与!

立即报名 我知道了