使用Anaconda通过.yml创建OpenCV环境时遇numpy依赖冲突求助
解决Anaconda创建OpenCV环境时的numpy依赖冲突问题
嘿,我之前也碰到过这种旧环境配置文件引发的依赖冲突问题——毕竟你这份yml里的包版本大多是2018年左右的,现在conda包仓库里的依赖关系已经更新了,旧版本组合很容易出现不兼容的情况。下面给你几个实用的解决思路:
方法1:简化配置文件,让conda自动匹配兼容版本
你的yml里指定了太多具体的包版本和build编号,这是触发冲突的核心原因。建议修改配置文件,只保留核心包名称,去掉版本号,让conda自动选择当前能互相兼容的版本组合:
修改后的cvcourse_windows.yml示例:
name: python-cvcourse channels: - defaults - michael_wild dependencies: - python=3.6 - numpy - opencv - opencv-contrib - keras - tensorflow=1.10.* - matplotlib - scikit-learn - jupyter # 其他工具包只需写名称,无需指定版本
之后重新运行创建命令:
conda env create -f cvcourse_windows.yml
方法2:手动调整冲突包的版本
如果一定要保留部分旧版本,你可以先查询opencv-contrib=3.3.1对应的兼容numpy版本:
conda search opencv-contrib=3.3.1 --info
从搜索结果里找到它依赖的numpy版本,然后替换掉yml里原有的numpy==1.15.1=py36ha559c80_0,再尝试创建环境。
方法3:清理conda缓存后重试
有时候缓存的旧包信息会干扰依赖解析,先清理缓存再尝试:
conda clean --all conda env create -f cvcourse_windows.yml
方法4:分步创建环境
如果上面的方法都不奏效,你可以先创建一个基础Python3.6环境,再逐个安装需要的包:
conda create -n python-cvcourse python=3.6 conda activate python-cvcourse conda install numpy opencv opencv-contrib keras tensorflow=1.10.* matplotlib scikit-learn jupyter
这种方式下conda会逐个处理依赖,更容易找到兼容的版本组合。
另外注意,你原始yml里的prefix路径是C:\Users\Marcial\Anaconda3\envs\cvcourse_windows,如果你的用户名是Jaysurya,建议删掉这一行,让conda默认把环境安装到你的用户目录下,避免权限或路径匹配问题。
内容的提问来源于stack exchange,提问作者Jaysurya Reddy




