Linux/CentOS7系统安装Python环境(运行Python代码)

目录

“Python3 pip联网安装库文件出错,ssl模块不可用”的解决方法

一、安装新版openssl3.1.4

二、安装Python3.12.0


前言

安装时,Python 版本需要和 openssl 版本需要相对匹配,在Python3.7之后的版本,依赖的openssl必须要是1.1.1或1.0.2之后的版本,而CentOS7安装的openssl1.0.2无法其满足要求,这将会导致在使用pip命令在线安装库文件时出错

因此,需要升级openssl,最好是安装完openssl再重新编译安装python3

一、安装新版openssl3.1.4

1.1 使用yum命令安装相关依赖,

没有这一步,后面安装python很可能会出错,pip问题也未能得到解决

yum group install 'Development Tools'
yum -y install zlib-devel zlib perl*
yum -y install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl openssl-devel xz xz-devel libffi-devel libuuid-devel perl-core epel-release tk-devel ncurses-libs gdbm-devel libdbi-devel python-backports-lzma
1.2 更新系统已安装软件
yum -y install
1.3 下载OpenSSL

这里选择安装openssl3.1.4,也可以安装其他版本,

官网地址:https://www.openssl.org/source/

可以下载安装包到本地,在上传到服务器中,这里我使用wget命令在线下载,原理都是一样;

a-选择安装包存放路径,无则新建(我这里是:/usr/local/src/)

# cd到指定目录下
cd /usr/local/src/

 b-使用wget下载源代码,下载完成后提取openssl3.1.4.tar.gz文件,并切换到openssl-3.1.4目录

#1 下载
wget https://www.openssl.org/source/openssl-3.1.4.tar.gz

#2 解压
tar -xzvf openssl-3.1.4.tar.gz

#3 进入到opensl-3.1.4目录下
cd opensl-3.1.4

1.4 编译、安装openssl3.1.4

目录为参考,自己可指定目录安装:–prefix=自定义目录

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --shared zlib

1.5 编译源代码
# 编译(时间有点长)
make
1.6 开始安装
#1\ 安装前测试,最后输出结果有pass说明无错误可安装(非必须)
make test

#2\开始安装
make install
1.7 配置链接

配置openssl的共享库,使openssl二进制文件从/usr/local/openssl/lib目录加载库文件。
切换到/etc/ld.so.cof.d目录下,创建新的配置文件:openssl-3.1.4.conf

# 进入到ld.so.conf.d目录下
cd /etc/ld.so.conf.d/

# 创建openssl-3.1.4.conf,并添加openssl库路径目录
vim openssl-3.1.4.conf

按i,然后复制下面并黏贴openssl库路径目录,保存退出(:wq)

/usr/local/openssl/lib64

重载动态链接:/usr/local/ssl/lib目录下的openssl库已经被加载了

ldconfig -v

备份旧的软连接

mv /bin/openssl /bin/openssl.bak
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak 
mv /usr/local/bin/openssl /usr/local/bin/openssl.bak
mv /usr/lib64/libssl.so.1.0.2k /usr/lib64/libssl.so.1.0.2k.bak
mv /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.1.0.2k.bak

创建新的软连接(不存在链接跳过即可)

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/bin/openssl /usr/local/bin/openssl
ln -s /usr/local/openssl/lib64/libcrypto.so.3 /lib/libcrypto.so.3
ln -s /usr/local/openssl/lib64/libcrypto.so.3 /lib/libcrypto.so.6
ln -s /usr/local/openssl/lib64/libssl.so.3  /usr/lib64/libssl.so.3
ln -s /usr/local/openssl/lib64/libcrypto.so.3  /usr/lib64/libcrypto.so.3
ln -s /usr/local/openssl/lib64/libssl.so  /usr/lib64/libssl.so
ln -s /usr/local/openssl/lib64/libcrypto.so  /usr/lib64/libcrypto.so

如果链接已存在无法创建,可以考虑备份或删除

#查看软链接(符号链接)指向的目标文件
readlink -f 软链接名称
#备份
mv 软链接名称 软链接名称.bak
#删除
rm -rf 软链接名称

修改目录权限

chmod -R 755 /usr/local/openssl/

配置库文件搜索路径

echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf

重新配置动态链接器的缓存,-v 输出详细信息

/sbin/ldconfig -v
1.8 为openssl创建新的环境文件
vim /etc/profile.d/openssl.sh

将下面的配置信息黏贴到openssl.sh文件中,然后保存退出

#Set OPENSSL_PATH
OPENSSL_PATH="/usr/local/openssl/bin"
export OPENSSL_PATH
PATH=$PATH:$OPENSSL_PATH
export PATH

赋予openssl.sh文件执行权限,不然将无法执行

chmod +x /etc/profile.d/openssl.sh

加载openssl环境并检查PATH bin目录

#1.
source /etc/profile.d/openssl.sh

#2.
echo $PATH

1.9 检查openssl文件
which openssl

查看openssl是否为刚才安装的3.1.4版本

openssl version -a

二、安装Python3.12.0

2.1 相关依赖前面已经安装好了,这里不再赘述。缺少依赖将导致python3.12.0安装失败,即使安装成功,也解决不了pip无法联网下载安装库文件的问题。

2.2 下载并解压python3.12.0源码

#1.cd到指定目录下,存放Python安装包文件中(自定义)
cd /usr/local/src/

#2.下载Python安装包
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz

#3.解压
tar -xzvf Python-3.12.0.tgz

#4.进入解压好的Python-3.12.0
cd Python-3.12.0

#5.赋予权限
chmod +x configure

2.3 编译安装

指定安装在/usr/local/python3目录下,修改”–prefix=“后面的参数可以更改安装目录

./configure --prefix=/usr/local/python3

2.4 make编译

make

2.5 安装

altinstall 和install,二者的一个重要区别在于,后者会创建符号链接,将 python3 等命令链接到正在安装的新版本 Python3 上,这可能会对系统造成破坏

make altinstall

删除一些临时文件(删除源代码(C\C++ code)生成的执行文件和所有的中间目标文件)

make clean

2.6 创建软链接

在/usr/bin路径下创建python3软链,指向已安装的python3.12

ln -s /usr/local/python3/bin/python3.12 /usr/bin/python3

/usr/bin路径下创建pip软链,指向已安装的pip3.12

ln -s /usr/local/python3/bin/pip3.12 /usr/bin/pip3

2.7 验证是否成功安装python

查看python3版本是否为刚才安装的版本

# 查看Python版本
python3 -V

# pip版本
pip3 -V

2.8 查看是否成功安装ssl模块
方法1:在python3环境看是否能导入ssl库而不出错,如下所示:

[root@localhost Python-3.12.0]python3
Python 3.12.0 (main, Nov 13 2023, 21:27:23) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> 

方法2:直接pip在线安装库文件,不出错即可

# flask可换成其他
pip3 install flask

至此,openssl3.1.4和python3.12.0已成功安装完成,pip功能也能正常使用!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值