python - ./python : error while loading shared libraries: libssl. so.1.1: 无法打开共享对象文件: 没有这样的文件或目录

标签 python ssl openssl pyopenssl

我需要在 Ubuntu 16.04 中尝试使用 python 3.7 和 openssl-1.1.1。 python 和 openssl 版本都是预发布的。按照 a previous post 中有关如何统计地将 openssl 链接到 python 的说明进行操作, 我下载了 opnssl-1.1.1 的源代码. 然后导航到 openssl 的源代码并执行:

./config
sudo make
sudo make install

然后,编辑 Modules/Setup.dist 取消注释以下行:

SSL=/usr/local/ssl
_ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto

然后下载python 3.7源代码。然后,在源代码中导航并执行:

./configure
make
make install

在我执行 make install 后,我在终端输出的末尾收到了这个错误:

./python: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
generate-posix-vars failed
Makefile:596: recipe for target 'pybuilddir.txt' failed
make: *** [pybuilddir.txt] Error 1

我无法弄清楚问题是什么以及我需要做什么。

最佳答案

这(应该)与 PythonOpenSSL 版本无关。

Python 构建过程,包括启动新构建的解释器时的一些步骤,并尝试加载一些新构建的模块 - 包括扩展模块(已编写在 C 中并且实际上是共享对象 (.sos))。

当一个 .so 被加载时,加载器必须(递归地)找到 .so 需要的所有 .so 文件(取决于on),否则无法加载。

Python 有一些依赖于 OpenSSL 的模块(例如 _ssl*.so_hashlib*.so) > 。由于您是针对 OpenSSL1.1.1 构建的(lib 名称不同于系统默认的名称:通常是 1.0.*),加载器将无法使用默认值。

您需要做的是指示加载程序(查看 [Man7]: LD.SO(8) 了解更多详细信息)到哪里寻找“您的”OpenSSL lib(位于在 /usr/local/ssl/lib 下)。一种方法是在 ${LD_LIBRARY_PATH} env var 中添加它们的路径(在构建 Python 之前):

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/ssl/lib
./configure
make
make install

您可能还想看看 [Python.Docs]: Configure Python - Libraries options (--with-openssl--with-openssl-rpath)。

值得一读(大概):

关于python - ./python : error while loading shared libraries: libssl. so.1.1: 无法打开共享对象文件: 没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50246699/

相关文章:

python - 执行 python 脚本时创建的额外文件

c - 使用 C 中的密码使用 openssl 加密文件

c - 为什么未初始化的内存可以安全地用于 OpenSSL 的随机数生成器?

node.js - NodeJS STARTTLS 使用 SNI

php - 在 PHP 中调用 openssl_pkcs7_verify 时指定输入格式类型

python - 使用 GTKBuilder 和 Python 设置小部件属性

python - 在 Keras 中增强多 channel 图像的 Hacky 方法

python - 使用 argparse 解析带有换行符的文本

android - 我们没有在默认的受信任 key 存储中获取 Symantec

php - .htaccess 为特定目录关闭 SSL