首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在windows x64上手动更新python使用的openssl版本。

在windows x64上手动更新python使用的openssl版本。
EN

Stack Overflow用户
提问于 2021-01-29 22:15:15
回答 1查看 284关注 0票数 0

我正在为windows10 (x64)运行python3.9.1。我注意到python附带的openssl dll文件(libcrypto-1_1.dll & libssl-1_1.dll)只有1.1.1.7版。因此,我想用最新的版本替换它们。

我已经能够按照发行版中的说明在windows10中成功构建openssl 1.1.1.9。我使用的是Microsoft visual studio 2019 + strawberry perl + nasm。我使用vs 2019的x64原生工具命令提示符运行了以下配置命令:

perl Configure VC-WIN64A

然后我运行nmake命令。这将生成我需要的两个dll: libcrypto-1_1-x64.dll和libssl-1_1-x64.dll

我重命名了这两个文件,删除了名称末尾的"-x64“,然后用它们替换了python安装中现有的dll。

当我尝试在python中导入ssl库时,我得到了错误:

ImportError: DLL load failed while importing _ssl: The specified module could not be found.

然后,我使用vs 2019的x86本地工具命令提示符和以下命令为x86构建了openssl:

perl Configure VC-WIN32

然后运行nmake,它产生了: libcrypto-1_1.dll和libssl-1_1.dll

我用这些替换了python安装中的dll。当我尝试在python中导入ssl库时,我得到:

ImportError: DLL load failed while importing _ssl: %1 is not a valid Win32 application.

我相当确定我需要x64版本的dlls,因为(1)我的python安装是x64 (2)当我在python附带的dlls上使用visual studio dumpbin.exe工具来检查它们中标示为" x64“的头文件时(3) x64 dlls的大小与python附带的dlls相似,而x86版本更小。

对于较旧版本的python,我曾经可以按照上面的步骤执行此操作。该版本随openssl 1.1.3 (可能是4)一起发布,我为1.1.6 (可能是7)构建了dll,并替换了它们,python没有任何问题。有没有可能默认配置脚本在这些版本中发生了变化,使得默认的windows x64配置不再以与python一起工作的方式构建openssl,因此我需要使用自定义设置?

我认为this page 1.3部分的信息可能是相关的,但如果是的话,我不确定如何在openssl构建过程中实现它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-01 06:01:13

在一些帮助下,我设法解决了这个问题。

CPython用来为windows安装程序构建OpenSSL的脚本实际运行以下命令:

Perl Configure VC-WIN64A-masm no-asm

而不是

Perl Configure VC-WIN64A

在我最初的帖子中描述的设置上运行了正确的命令后,我能够交换出dll,python没有问题地接受了它们。

ssl.OPENSSL_VERSION现在输出‘OpenSSL 1.1.1i 2020年12月8日’。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65956119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档