我需要在 Ubuntu 16.04 中尝试使用 openssl-1.1.1 的 python 3.7。 python 和 openssl 版本都是预发布的。遵循有关如何统计地将 openssl 链接到 python 的说明以前的帖子,我下载了源代码openssl-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
然后下载蟒蛇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
我不知道问题是什么以及我需要做什么。
这与(应该)无关Python or OpenSSL版本。
Python构建过程,包括启动新构建的解释器时的一些步骤,并尝试加载一些新构建的模块 - 包括扩展模块(写在C实际上是共享对象 (.sos)).
When an .so加载后,加载器必须(递归地)找到所有.so文件.so需要(取决于),否则无法加载。
Python有一些模块(例如_ssl*.so, _hashlib*.so)取决于OpenSSL libs。自从你建立了你的OpenSSL1.1.1 (the lib名称与系统默认的名称不同:通常1.0.*),加载器将无法使用默认的。
您需要做的是指示加载程序(检查[Man7]:LD.SO(8)了解更多详情)在哪里寻找“您的”OpenSSL libs(位于/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]:配置 Python - 库选项 (--with-openssl, --with-openssl-rpath).
值得一读(可能):
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)