python3.10及以上版本编译安装ssl模块的详细过程

 更新时间:2023年05月18日 09:32:32   作者:伏逸  
最近搞安装ssl模块每天都弄到很晚,所以这里给大家整理下,这篇文章主要给大家介绍了关于python3.10及以上版本编译安装ssl模块的详细过程,文中介绍的非常详细,需要的朋友可以参考下

前言

由于python3.10之后版本不在支持libressl使用ssl,需要使用openssl安装来解决编译安装python时候遇到的ssl模块导入失败的问题,这里需要用的openssl1.1.1版本或者更高版本

编译安装openssl

下载地址

参见https://www.openssl.org/,包括以下版本:
https://www.openssl.org/source/openssl-3.1.0-alpha1.tar.gz
https://www.openssl.org/source/openssl-1.1.1s.tar.gz
https://www.openssl.org/source/openssl-3.0.7.tar.gz

编译安装

注:编译之前请先确保系统中安装了make以及gcc的软件包。,编译安装前确认/usr/include/openssl//为空

tar -zxf openssl-1.1.1s.tar.gz
cd openssl-1.1.1s/
./config -fPIC --prefix=/usr/include/openssl enable-shared
make
make install

其中:

  • l -fPIC: 位置无关代码
  • l --prefix=: 路径 一般选 /usr/include/openssl
  • l enbale-shared: 动态库

安装openssl3.0.7问题

安装openssl3.0.7时候报错,查看对应文件显示模块缺少,需要加载导入模块

报错原因: 缺少IPC/Cmd.pm模块

解决方法:

安装perl-CPAN

$ yum install -y perl-CPAN

进入CPAN的she模式,首次进入需要配置shel,按照提示操作即可

$ perl -MCPAN -e shell

在shell中安装缺少的模块,确定是cpan[1]算是进入了操作命令入口

cpan[1]> install IPC/Cmd.pm

退出界面回到shell

cpan[1]> quit

  安装成功后,重新编译OpenSSL即可

编译安装python3.11.2

下载地址

python下载地址

https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz

编译安装

需要修改解压后的python Moudle/Setup文件

tar -xf Python-3.11.2.tar.xzcd Python-3.11.2/

需要修改解压后的python Moudle/Setup文件

# To statically link OpenSSL:
- # _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
+ _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
- #    -l:libssl.a -Wl,--exclude-libs,libssl.a \
+     -l:libssl.a -Wl,--exclude-libs,libssl.a \
- #    -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a
+     -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a
- # _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
+ _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
- #    -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a
+     -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a

编译安装,注意configure命令

此处参考了:configure配置

chmod +x configure
mkdir /usr/local/python-3.11.2
./configure --prefix=/usr/local/python-3.11.2 --with-zlib=/usr/include/ --with-openssl-rpath=auto  --with-openssl=/usr/include/openssl  OPENSSL_LDFLAGS=-L/usr/include/openssl   OPENSSL_LIBS=-l/usr/include/openssl/ssl OPENSSL_INCLUDES=-I/usr/include/openssl
make -j 4
make install

验证是否成功安装ssl模块

/usr/local/python-3.11.2/bin/python3 -V
/usr/local/python-3.11.2/bin/python3 
# 执行下面命令不报错既正常
>>import _ssl
>>

总结

到此这篇关于python3.10及以上版本编译安装ssl模块的文章就介绍到这了,更多相关python编译安装ssl模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python区块链创建多个交易教程

    python区块链创建多个交易教程

    这篇文章主要为大家介绍了python区块链创建多个交易的实现示例教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python中json.load()与json.loads()方法有什么区别详解

    Python中json.load()与json.loads()方法有什么区别详解

    在读取文件时解码python的json格式,常用到json.loads()与json.load(),下面这篇文章主要给大家介绍了关于Python中json.load()与json.loads()方法有什么区别的相关资料,需要的朋友可以参考下
    2022-08-08
  • Python报错TypeError: unsupported operand的问题分析和解决方法

    Python报错TypeError: unsupported operand的问题分析和解决方法

    TypeError: unsupported operand 是Python中常见的一类错误,通常在尝试对不兼容的数据类型进行操作时发生,比如,当你尝试对字符串和整数进行加法操作时,Python会抛出这一错误,所以本文给大家介绍了Python报错TypeError: unsupported operand的问题解决
    2024-09-09
  • Python 网络爬虫--关于简单的模拟登录实例讲解

    Python 网络爬虫--关于简单的模拟登录实例讲解

    今天小编就为大家分享一篇Python 网络爬虫--关于简单的模拟登录实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 详解python中递归函数

    详解python中递归函数

    这篇文章主要介绍了python递归函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 十分钟利用Python制作属于你自己的个性logo

    十分钟利用Python制作属于你自己的个性logo

    这篇文章主要给大家介绍了关于十分钟如何利用Python制作属于你自己的个性logo的相关资料,主要利用的是词云实现这个效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧
    2018-05-05
  • 教你如何识别代理IP的真实地理位置(使用Python库)

    教你如何识别代理IP的真实地理位置(使用Python库)

    本文介绍了IP数据库查询、反向DNS查询和网络延迟测量三种方法,并通过案例分析和代码实现展示了如何使用Python库进行IP地理位置查询,需要的朋友可以参考下
    2024-03-03
  • Python requests设置代理的方法步骤

    Python requests设置代理的方法步骤

    这篇文章主要介绍了Python requests设置代理的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Python语言描述连续子数组的最大和

    Python语言描述连续子数组的最大和

    这篇文章主要介绍了Python语言描述连续子数组的最大和,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Jupyter Notebook切换虚拟环境的三种方法

    Jupyter Notebook切换虚拟环境的三种方法

    本文主要介绍了Jupyter Notebook切换虚拟环境的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07

最新评论