Centos安装python3后pip出现ssl问题的解决

问题

安装python3.10.6后pip安装包报错:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

问题原因

当前系统没有 openssl 或者版本比较低,一般 python3.10 需要的openssl的版本为1.0.2或者1.1.x。需要对 openssl 进行升级,并重新编译 python3.10.6。

解决方法

1.先检查当前openssl 的版本
执行 openssl version 大于1.1.0版本即可;否则执行如下

# 1.安装对应的依赖库
sudo yum install -y zlib yum install zlib-devel openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++

# 2. 下载openssl安装文件
mkdir /tmp/softwarebak
cd /tmp/softwarebak
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz   --no-check-certificate

# 3. 解压安装openssl,并进入openssl的目录
tar -zxvf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN.UTF-8

./config --prefix=/usr/local/openssl shared zlib 
sudo make && make install

# 4. 备份当前openssl
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak 

# 5. 配置使用新版本
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

# 6. 更新动态链接库数据并重新加载
echo /usr/local/openssl/lib >> /etc/ld.so.conf
ldconfig -v

# 7. 查看是否升级成功
openssl version

# 8. 如果缺少libssl.s0.1.1
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

2.安装依赖包
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gdbm-devel db4-devel libpcap-devel xz-devel make gcc gcc-c++
3.下载python3源码包,并解压编译
注意:如果升级了openssl ,需要解压源码包后修改vim /tmp/Python-3.10.6/Modules/Setup 文件,在文件末尾追加如下内容:

SSL=/usr/local/openssl
_ssl _ssl.c \
        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
        -L$(SSL)/lib -lssl -lcrypto
#下载源码包wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz  #此处可更换为自己想要的包名即可# 进入源码目录
cd Python-3.10.6
#指定编译语言
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN.UTF-8
#指定安装目录
sudo ./configure --prefix=/usr/local/python3 --with-ssl=/usr/local/openssl 
#编译安装
sudo make && sudo make install && sudo make clean

4.设置环境变量,并检查是否成功

#编辑/etc/profile,在尾部添加如下代码:
echo 'export PATH=$PATH:/usr/local/python3/bin' >> /etc/profile

#使用source命令重新加载/etc/profile
source /etc/profile
软链接,设置全局变量
sudo ln -s /usr/local/python3/bin/python3.10  /usr/bin/python3
sudo ln -s /usr/local/python3/bin/pip3.10  /usr/bin/pip3

 
#查看安装的python版本 python3 --versionpip3 list#设置pip源
cat > /etc/pip.conf << EOF
[global]
trusted-host = mirrors.aliyun.com
index-url = http://mirrors.aliyun.com/pypi/simple/

[list]
format=columns
EOF

5.如果yum无法正常使用,可能是3跟2冲突导致,修改如下文件即可
sudo vim /usr/bin/yum sudo vim /usr/libexec/urlgrabber-ext-down 把文件里面的#!/usr/bin/python 也修改为#! /usr/bin/python2
参考链接:
1、https://www.cnblogs.com/xq0422/p/17201381.html
2、https://blog.csdn.net/CSDN_fzs/article/details/103220535
3、https://blog.csdn.net/wushiqi11/article/details/104673802

PHP

PHP核心编程 MYSQL扩展 知识点笔记整理(二)

2021-8-8 15:17:57

LinuxPython

Linux下创建Python虚拟环境

2023-11-14 13:44:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索
Array ( [0] => post [1] => user [2] => document [3] => newsflashes )