Python3中安装后SSL问题及解决

 更新时间:2022年12月19日 10:49:55   作者:lucky_白杨  
这篇文章主要介绍了Python3中安装后SSL问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Python3安装后SSL问题

问题

编译安装时已经指定了–with-openssl的参数并且指向了你的openssl的源码包地址,但是编译安装之后ssl还是没有办法用。

解决

根据网上的文章介绍,要进入到python源码包解压后的那个目录下的Modules/Setup,注意Setup这个文件,只有在python完成安装后才会生成这个文件。

并且按照如下图去除注释:

可以看到SSL的路径为/usr/local/ssl,所以如果你看到自己的服务器上面没有这个路径,那么你就没有安装ssl相关的东西,或者说你的ssl相关的目录名不叫ssl。

那么你更改ssl的路径为你的ssl安装目录也可以,或者说你安装ssl的时候使用这个目录名为安装目录。

还有,可以使用libressl来代替openssl,我这次问题就是安装的libressl来解决的问题,我将libresll安装到了/usr/local/ssl这里,并且将上面的注释去除,然后重新make install,问题就解决啦!

注意python3在编译安装的时候提示了,ssl需要用openssl1.0.2或者libressl2.64(不含)以后的版本!反正用最新的就好啦!

Python3安装过程出现的ssl问题

No module named _ssl或者renaming “_ssl“ since importing it failed

如果安装Python或者运行Python的时候报了上面的错误,那么首先你需要确定自己是否安装了openssl,若安装了openssl,请确定openssl的安装位置及lib和include被安装在哪里,另外在/usr/lib64中是否有libssl.so.1.1和libcrypto.so.1.1等文件,一般而言openssl的lib及include位置为/usr/local/lib64/ 或 /usr/local/lib/ 或 /usr/local/openssl/lib/ 及 /usr/local/include 或 /usr/local/openssl/include

若没有安装,请在https://www.openssl.org/source/下载最新版,如下所示

wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar -zxvf openssl-1.1.1d.tar.gz
cd openssl-1.1.1d
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make && make install
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

openssl环境安装好后,就下载目标版本的Python安装包并解压了

wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz
tar -zxvf Python-3.7.6.tgz
cd Python-3.7.6

进入目录后很多相关的教程都会说要你改下面的文件,但是!!不会和你说为什么改,只关顾着说取消注释就完事了。

vim Modules/Setup.dist
找到SSL相关配置
#SSL=/usr/local/ssl
#_ssl _ssl.c
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl
# -L$(SSL)/lib -lssl -lcrypto

我们先把这几段取消注释,然后看红色部分字段,这个字段即openssl的lib及include所在的目录,假设include目录在/usr/local/下,且路径/usr/local/include/openssl存在,那么红色部分字段改为/usr/local(请根据实情)

紫色部分字段,即openssl的lib所在的路径,请确认一下该路径下是否有libssl.so.1.1之类的,没有说明找错了。请把紫色部分字段改为lib64(请根据实情)

改完后保存wq

例子

SSL=/usr/local
_ssl_ssl.c
-DUSE_SSL -l$(SSL)/include -l$(SSL)/include/openssl
-L$(SSL)/lib64 -lssl -lcrypto

最后编译看看是不是好了?

./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC && make && make install

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Python在Excel中实现自动查找并替换数据

    使用Python在Excel中实现自动查找并替换数据

    随着项目的进展,需要经常在Excel业务表格中查找及替换数据,已保证数据与实际项目进度一致,手动一个一个查找,然后替换,效率太低,还容易遗漏,现在我们来试试用Python自动完成查找及替换吧,需要的朋友可以参考下
    2023-12-12
  • python tkinter之 复选、文本、下拉的实现

    python tkinter之 复选、文本、下拉的实现

    这篇文章主要介绍了python tkinter之 复选、文本、下拉的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 使用LibTorch进行C++调用pytorch模型方式

    使用LibTorch进行C++调用pytorch模型方式

    这篇文章主要介绍了使用LibTorch进行C++调用pytorch模型方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python真题案例之错位键盘 单词长度 字母重排详解

    Python真题案例之错位键盘 单词长度 字母重排详解

    这篇文章主要介绍了python实操案例练习,本文给大家分享的案例中主要任务有错位键盘、单词长度、字母重排,需要的小伙伴可以参考一下
    2022-03-03
  • django 捕获异常和日志系统过程详解

    django 捕获异常和日志系统过程详解

    这篇文章主要介绍了django-捕获异常和日志系统过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python map函数()用法

    Python map函数()用法

    map()函数是Python中的一个内置函数,它的功能是将指定的函数,依次作用于可迭代对象的每个元素,并返回一个迭代器对象,这篇文章主要介绍了Python map函数()用法,需要的朋友可以参考下
    2023-07-07
  • Python获取"3年前的今天"的日期时间问题

    Python获取"3年前的今天"的日期时间问题

    在Python中,如何获取" 3年前的今天"的datetime对象,本文通过实例代码给大家详细讲解,代码简单易懂对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-01-01
  • python统计列表中元素出现次数的三种方法

    python统计列表中元素出现次数的三种方法

    这篇文章主要介绍了python统计列表中元素出现次数的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧
    2024-08-08
  • PyTorch 检查GPU版本是否安装成功的操作

    PyTorch 检查GPU版本是否安装成功的操作

    这篇文章主要介绍了PyTorch 检查GPU版本是否安装成功的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python Pillow Image.save 保存为jpg图片压缩问题

    Python Pillow Image.save 保存为jpg图片压缩问题

    Pillow 库支持多种图片格式,Pillow 能够很轻松地实现图片格式之间的转换。本文就来详细的介绍一下Image.save的具体使用,感兴趣的可以了解一下
    2021-11-11

最新评论