python3编译安装了ssl还是没用,Linux非root安装Python3以及解决SSL问题

说明

接上一篇。

【Linux】非root安装Python3及其包管理

上一篇虽然成功安装了Python3及一些常用的模块,但因为一直装不上SSL模块,导致一些包无法安装,尝试了不少方法都失败了(网上好多教程都是错误的,或者是只针对有root权限的用户)。这次重新编译Python3,并一次性解决SSL的问题。

升级Open SSL

首先删除上次安装好的python。上篇我们已知SSL模块安装失败是因为系统自带的OpenSSL版本太低,因此需要更新OpenSSL或者用LibreSSL来代替(后者我简单尝试了下,没有加入环境变量失败了,后续没有再深究),所以我这里还是升级OpenSSL(官网:https://www.openssl.org/source/)。

wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz

tar -xvf openssl-1.1.1d.tar.gz

cd openssl-1.1.1d

./config --prefix=/my/path/penssl-1.1.1d no-zlib #注意添加no-zlib

make && make install

常规的源码编译安装方法,但需要特别注意配置环境的时候记得加no-zlib参数。

Python3安装

wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz

tar -xvf Python-3.8.1.tgz

cd Python-3.8.1

./configure --prefix=/my/path/python/

# 配置环境后先别急着编译

配置环境后先别急着编译,需要修改Modules/Setup文件,将以下四行取消注释,并将SSL路径修改。

SSL=/my/path/openssl #改为刚安装的ssl路径

_ssl _ssl.c \

-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \

-L$(SSL)/lib -lssl -lcrypto

修改完成后,此时如果直接make编译,仍会报如下类似错误:

./python: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

generate-posix-vars failed

make: *** [pybuilddir.txt] Error 1

缺少库文件,说明libssl.so.1.1这个库没有读取到,网上其他回答都是通过建立软链接来解决,但我没有root权限,这些回答于我是浮云。怎么办?首先查看下openssl/lib下是否存在这个库文件,然后将openssl库加入环境变量即可:

export LD_LIBRARY_PATH=/my/path/openssl-1.1/lib:$LD_LIBRARY_PATH

所以,在我们修改Modules/Setup文件,并将openssl加入环境变量后,再进行编译:

make && make install

安装顺利。试下SSL模块是否可行:

Python 3.8.1 (default, Feb 13 2020, 10:49:45)

[GCC 4.9.3] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import ssl

>>>

说明已经解决了,接下来安装包等管理可参考上一篇。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值