【问题标题】:libssl.so.3: cannot open shared object file: No such file or directorylibssl.so.3:无法打开共享对象文件:没有这样的文件或目录
【发布时间】:2022-11-10 17:26:28
【问题描述】:

我提供了一个 vanila centos,然后执行了以下命令:

conda create --name an-env python=3.9
conda activate an-env

conda install -c conda-forge sentence-transformers

我正在尝试导入一个拥抱人脸库:

from sentence_transformers import SentenceTransformer
import os

在 centos 8 机器中,我收到以下错误:

libssl.so.3: cannot open shared object file: No such file or directory

我使用以下命令安装了它:

conda install -c conda-forge sentence-transformers

已经尝试过以下方法:

yum install openssl.x86_64
yum install pyOpenSSL.x86_64

我也试过:

sudo ldconfig

仍然出现以下错误:

libssl.so.3: cannot open shared object file: No such file or directory

谁能帮我解决这个错误?

【问题讨论】:

  • 做一个ldconfig(或sudo ldconfig)然后尝试你正在做的任何工作吗?如果不是,请描述您正在做什么导致此问题。
  • 您需要安装与您的软件编译所针对的相同版本的 OpenSSL。安装为与您的发行版提供的版本不同的 OpenSSL 版本构建的预编译二进制文件是您如何获得此错误的原因。 (好吧,你得到这个错误的一种方法;另一种是用具有不同 ABI 版本的发行版提供的 OpenSSL 替换,但这会破坏的不仅仅是 Python)。
  • 一般来说,这更像是一个系统管理问题,而不是软件开发问题。它是由软件打包或安装不当引起的,而诊断它的技能是您友好的本地系统管理员将掌握的技能。 (您可能还考虑使用像 Nix 这样的包管理器,其中此类问题是不可能的)。
  • @CharlesDuffy 非常感谢您的反馈。不幸的是,我没有系统管理。
  • 你有 pyopenssl 的源 RPM 吗?考虑从源头重建它。 (如果它说它的依赖关系没有得到满足,那么可能有一个很好的理由,比如它是为与手头不同的发行版生成的)。

标签: python python-3.x centos8


【解决方案1】:

我从@CharlesDuffy 那里得到了这个想法,他提到了You need to have the same version of OpenSSL installed that your software was compiled against

我使用conda uninstall sentence-transformers 卸载了库。然后用pip install -U sentence-transformers安装。

这解决了这个问题。

【讨论】:

    【解决方案2】:

    我在构建 Docker 环境时遇到了类似的问题。似乎在conda-forge 中,一些tokenizers 为版本0.12.1 构建(更具体地说是*_0 中的那些)不包含OpenSSL 依赖项,尽管它们是针对特定版本构建的(显然,> = 3.0)。尽管它与 OpenSSL 1.1.1* 不兼容,这可能会导致 conda(或在我的情况下为 mamba)求解器选择此版本。

    要在仍然使用 conda 的同时解决此问题,我建议在 conda installenvironment.yml 中显式使用 tokenizers>=0.13.1

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2022-06-15
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 2022-07-22
      • 2015-04-12
      相关资源
      最近更新 更多