问题及解决方案

使用conda创建一个新环境时出现了:

1
Error while loading conda entry point: conda-content-trust (OpenSSL 3.0's legacy provider failed to load. This is a fatal error by default, but cryptography supports running without legacy algorithms by setting the environment variable CRYPTOGRAPHY_OPENSSL_NO_LEGACY. If you did not expect this error, you have likely made a mistake with your OpenSSL configuration.)

实际上通过配置一个环境变量即可:

1
export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=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_LEGACY1
  • 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. 临时解决方案(仅适用于当前会话)
    打开终端并运行:

    1
    export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1
  2. 永久解决方案(适用于所有会话)
    将该导出命令添加到你的shell配置文件中(例如,~/.bashrc~/.bash_profile~/.zshrc,取决于你使用的shell)。例如,如果你使用的是Bash:

    1
    2
    echo 'export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1' >> ~/.bashrc
    source ~/.bashrc

验证和应用步骤

  1. 使用上述方法之一设置环境变量。
  2. 重新启动你的终端或使用以下命令重新加载shell配置文件以应用更改:
    1
    source ~/.bashrc  # 或者使用适合你的shell配置文件
  3. 再次运行你的Conda命令,看看问题是否解决。

通过设置CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1,你可以确保cryptography库在不需要OpenSSL的遗留算法的情况下运行,从而防止出现此错误。