Windows下如何让已安装的Python集成升级后的OpenSSL
Windows下让Python 3.11.5集成新版OpenSSL的解决办法
为什么会出现这个问题
Python在Windows平台的官方安装包通常是静态绑定自身编译时的OpenSSL版本,不会自动读取系统PATH里的OpenSSL。所以你升级系统级的OpenSSL后,Python的ssl模块依然会用自己内置的旧版本,这是正常现象。
不用重装Python的解决方法
方法1:用Conda管理环境(推荐,操作简单)
如果你是用Conda来管理Python环境,直接更新环境里的OpenSSL包即可:
conda update openssl
更新完成后,Python会自动使用新版的OpenSSL。
方法2:手动替换Python的OpenSSL动态库
这个方法适合用官方Python安装包的用户:
- 找到你的Python安装目录(比如
C:\Users\你的用户名\AppData\Local\Programs\Python\Python311),进入其中的DLLs文件夹 - 备份里面的
libcrypto-3-x64.dll和libssl-3-x64.dll文件(32位Python的话,文件名后缀是-x86) - 打开你安装的OpenSSL 3.0.14目录,进入
bin文件夹,找到对应的libcrypto-3-x64.dll和libssl-3-x64.dll - 把这两个文件复制到Python的
DLLs文件夹,替换原来的文件 - 重启Python解释器,执行以下代码验证:
import ssl print(ssl.OPENSSL_VERSION)
注意:一定要保证OpenSSL的位数(32/64位)和Python完全一致,否则会报错。
方法3:重新编译Python(不推荐)
如果你有编译经验,可以下载Python 3.11.5的源码,手动配置编译选项链接到新版OpenSSL。但这个步骤繁琐,普通用户没必要折腾。
要不要重装Python?
直接重装官方的Python 3.11.5安装包没用——官方打包时绑定的OpenSSL版本是固定的,3.11.5的官方包不会因为你系统升级了OpenSSL就换成新版。所以没必要重装,用上面的方法更高效。
内容的提问来源于stack exchange,提问作者user1893813
相关产品推荐
相关产品推荐

