Conda环境无法安装包遇CondaSSLError:OpenSSL不可用求助
问题描述
我在conda中创建了一个新环境,创建完成后为了最大化后续软件的性能,执行了以下命令禁用多线程:
conda env config vars set OMP_NUM_THREADS=1 conda env config vars set NUMEXPR_MAX_THREADS=1
随后尝试安装目标软件时出现如下错误:
CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is required to download and install packages. Exception: HTTPSConnectionPool(host='conda.anaconda.org', port=443): Max retries exceeded with url: /conda-forge/win-64/current_repodata.json (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))
原本以为是目标软件的特定问题,于是尝试执行以下命令安装Python来验证:
conda install -c conda-forge python
结果出现了完全相同的错误:
CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is required to download and install packages. Exception: HTTPSConnectionPool(host='conda.anaconda.org', port=443): Max retries exceeded with url: /conda-forge/win-64/current_repodata.json (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))
这看起来是当前环境的问题,但我之前在这台机器上创建其他环境时从未遇到过这种情况,请问是什么原因导致的?
问题分析与解决思路
- 环境变量干扰SSL模块加载:你设置的
OMP_NUM_THREADS和NUMEXPR_MAX_THREADS本身和SSL无关,但有可能在配置环境变量时,意外影响了conda调用OpenSSL的路径或依赖。尤其是Windows系统,conda依赖自带的OpenSSL动态库,环境变量的变更可能让程序找不到这些库文件。 - 变量设置后的环境激活问题:执行
conda env config vars set后,需要重新激活环境甚至重启shell才能让变量生效,若在变量未完全生效的状态下操作,也可能触发异常。 - 新环境的OpenSSL组件未正确安装:虽然之前创建环境没问题,但新环境可能在初始化时OpenSSL组件下载不完整,刚好在设置线程变量后暴露了这个问题。
排查步骤
- 先移除刚才设置的两个环境变量,验证是否是变量导致的问题:
执行完后重新激活环境,再尝试安装软件或Python。如果错误消失,那就是这两个变量的设置间接引发了问题。conda env config vars unset OMP_NUM_THREADS conda env config vars unset NUMEXPR_MAX_THREADS - 如果移除变量后还是报错,直接删除当前环境重新创建,先不设置线程变量,直接安装目标软件,看是否还会出现SSL错误。
- 检查当前环境是否安装了OpenSSL组件:
如果列表里没有conda list opensslopenssl包,尝试从base环境安装或者修复conda的SSL配置。
内容的提问来源于stack exchange,提问作者Ria Dunn
相关产品推荐
相关产品推荐

