CentOS系统Miniconda虚拟环境中升级OpenSSL至3.5.1时的Cryptography依赖冲突问题求助
CentOS系统Miniconda虚拟环境中升级OpenSSL至3.5.1时的Cryptography依赖冲突问题求助
嗨,看了你的问题,这明显是conda和pip包管理“打架”加上旧版cryptography的版本限制导致的,我给你梳理几个能快速解决的思路:
先搞懂为啥会出这问题
你用pip install装的cryptography 45.0.5其实不在conda的依赖追踪体系里——conda只认自己安装的包,所以它还是盯着你环境里旧版的conda-installed cryptography 37.0.2来做冲突判断,而这个37.0.2版本的cryptography硬要求OpenSSL必须在1.1.1o到1.1.2a之间,自然和3.5.1不兼容。另外你第一次执行conda update openssl显示“已最新”,是因为默认conda频道里,和你现有旧包兼容的OpenSSL最高就是1.1.1w,3.5.1不在它的兼容列表里。
直接能用的解决步骤
方案1:把pip装的cryptography换成conda版(最快)
先把pip装的那个cryptography卸掉,换成conda-forge频道的最新兼容版——conda-forge的包更新快,对新版OpenSSL支持更好:
# 卸载pip安装的cryptography,避免干扰 pip uninstall -y cryptography # 安装支持OpenSSL 3.x的最新版cryptography conda install -c conda-forge cryptography=45.0.5
装完之后再尝试安装OpenSSL 3.5.1:
conda install -c conda-forge openssl==3.5.1
方案2:更新整个环境的依赖(更彻底)
如果你的环境里没有必须保留的旧版包,直接让conda把所有包更到互相兼容的最新状态,再装OpenSSL:
# 一键更新所有依赖到兼容最新版 conda update --all # 再安装目标OpenSSL版本 conda install -c conda-forge openssl==3.5.1
这个方法能让conda自动调整所有包的版本,从根源上消除依赖冲突。
方案3:新建干净环境(最稳妥)
要是当前环境的依赖已经乱得没边,不想折腾的话,直接新建一个虚拟环境一步到位:
# 新建Python3.10环境,直接指定要的OpenSSL和cryptography版本 conda create -n new_openssl_env python=3.10 openssl=3.5.1 cryptography=45.0.5 -c conda-forge # 激活新环境 conda activate new_openssl_env
这个方法完全避开旧环境的依赖“历史包袱”,基本不会出问题。
最后验证一下
不管用哪个方案,装完之后记得用这俩命令确认版本:
# 查看conda环境里的OpenSSL版本 conda list openssl # 查看当前环境生效的OpenSSL版本 openssl version
要是都显示3.5.1就大功告成啦!
内容来源于stack exchange
相关产品推荐
相关产品推荐

