Linux下Conda遇到OpenSSL 3.0 Legacy错误
问题及解决方案
使用conda创建一个新环境时出现了:
1 |
|
实际上通过配置一个环境变量即可:
1 |
|
问题剖析
以下是GPT的回答:
这个错误消息与OpenSSL 3.0及其提供的遗留加密算法有关。以下是错误的详细解释和解决方法:
错误详细解释
- Error while loading conda entry point: conda-content-trust:这表示加载Conda的特定组件(即
conda-content-trust
)时出现问题。 - OpenSSL 3.0’s legacy provider failed to load:OpenSSL 3.0 包含一个“遗留提供者”,其中包含较旧的加密算法。此错误表明该提供者未能加载。
- This is a fatal error by default:默认情况下,未能加载遗留提供者被认为是一个致命错误。
- **cryptography supports running without legacy algorithms by setting the environment variable
CRYPTOGRAPHY_OPENSSL_NO_LEGACY
**:cryptography
库可以在不使用这些遗留算法的情况下运行,只需设置环境变量CRYPTOGRAPHY_OPENSSL_NO_LEGACY
为1
。 - If you did not expect this error, you have likely made a mistake with your OpenSSL configuration:此错误可能是由于你的系统上的OpenSSL配置不正确造成的。
解决方法
要解决此错误,你可以将环境变量CRYPTOGRAPHY_OPENSSL_NO_LEGACY
设置为1
,这将指示cryptography
库跳过遗留算法并在没有它们的情况下运行。
设置环境变量
临时解决方案(仅适用于当前会话):
打开终端并运行:1
export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1
永久解决方案(适用于所有会话):
将该导出命令添加到你的shell配置文件中(例如,~/.bashrc
、~/.bash_profile
或~/.zshrc
,取决于你使用的shell)。例如,如果你使用的是Bash:1
2echo 'export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1' >> ~/.bashrc
source ~/.bashrc
验证和应用步骤
- 使用上述方法之一设置环境变量。
- 重新启动你的终端或使用以下命令重新加载shell配置文件以应用更改:
1
source ~/.bashrc # 或者使用适合你的shell配置文件
- 再次运行你的Conda命令,看看问题是否解决。
通过设置CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1
,你可以确保cryptography
库在不需要OpenSSL的遗留算法的情况下运行,从而防止出现此错误。