当前位置: 首页 > news >正文

【环境踩坑系列】centos7安装python3.10.X

前言

虽然centOS8已经发布了相当一段时间了,但是基于稳定性、成熟的社区等原因,大家在选择centOS作为服务器操作系统的时候仍然会选择centOS7作为首选。但是centOS7自带的是python2.7.5,当前大量的python程序要用到的又是python3,很多热门的python库甚至就没有支持python2的版本。所以在centOS7上装python3是很常用到的,尤其是装python3.10.X版本。本文选择的python3.10.6.

目录

1.下载安装

1.1.安装前置依赖

1.2.安装包下载

1.3.解压源码包 

1.4.进入到解压目录,开始配置 

1.5.编译源码

1.6.创建软连接

1.7.修改默认依赖版本

1.8. 创建pip3的软连接

2.报错处理

2.1.No module named '_ssl'

2.2.error while loading shared libraries: libssl.so.1.1


1.下载安装

1.1.安装前置依赖

这里我们直接通过yum安装依赖,输入下列命令进行安装。

yum install zlib-devel bzip2-devel opssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc libffi-devel 

1.2.安装包下载

下载地址:

Index of /ftp/python/3.10.6/

可以手动下载传到服务器上再解压,也可以通过wget下载安装包,自行选择。

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

没有wget的需要yum下载

yum -y install wget

1.3.解压源码包 

tar -xvf Python-3.10.6.tgz

1.4.进入到解压目录,开始配置 

./configure

1.5.编译源码

make & make install

1.6.创建软连接

先删除默认的python安装程序。

rm -f /usr/bin/python

将最新的python3.10.6创建软链接。

ln -s 刚刚自己解压出来的安装目录 /usr/bin/python

1.7.修改默认依赖版本

由于系统中很多工具和命令是依赖于原生系统自带的python2的,所以建立软连接将系统的python版本升级为python3后,要手动将这些重要的命令指回原来的python2路径,让他们继续使用python,避免出现因为python版本问题造成的系统工具和指令不可用的问题。

修改yum依赖默认的python版本

vi /usr/libexec/urlgrabber-ext-down

将首行的python 改为 python2 

vi /usr/bin/yum

也同样的将首行的python 改为 python2

修改防火墙的python 版本  

vi /usr/bin/firewall-cmd

将首行的python 改为 python2 

vi /usr/sbin/firewalld 

修改完这几个文件之后python的安装已经完成,yum依赖和防火墙的python也都修改成为最新版本的python了。

1.8. 创建pip3的软连接

给pip一个软连接

ln -s刚刚自己解压出来的安装目录/bin/pip3.10 /usr/bin/pip3

2.报错处理

安装好python3.10.X版本后,在使用过程中可能会遇见一些错误,接下来说一下这些错误怎么处理。

2.1.No module named '_ssl'

 _ssl 模块没有正确加载或编译。这个模块是 Python 标准库的一部分,用于处理 SSL/TLS 连接。

官方其实记录了这个问题,以下是官方文档:

PEP 644 – Require OpenSSL 1.1.1 or newer | peps.python.org

总结起来就是python3.10以后的版本OPENSSL不再是/usr/local/ssl 的默认路径,变成了/path/to/openssl/directory,而使用openssl3以上的版本的lib目录名也变成了lib64,编辑vim /你自己的Python编译源文件路径/Modules/Setup。

上图中的操作都完成之后,删掉原来编译完成后的python文件目录,重新执行编译命令:

./configure

make & make install

编译完成后用python命令进入编译器界面:

import ssl

如果没报错,就说明问题解决了。

2.2.error while loading shared libraries: libssl.so.1.1

这是因为缺少openssl库造成的

wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz --no-check-certificate
tar -zxf openssl-1.1.1n.tar.gz
cd openssl-1.1.1n

yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel

yum install -y perl-CPAN
perl -MCPAN -e shell

./config --prefix=/usr/local/openssl
make -j 2
make install
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl

vim /etc/ld.so.conf

 在文件末尾添加一行代码:

/usr/local/openssl/lib

使之生效:

ldconfig -v

验证版本:

openssl version


http://www.mrgr.cn/news/35994.html

相关文章:

  • MySQL数据库专栏(四)MySQL数据库链接操作C#篇
  • 调整TCP参数, 优化网络性能
  • React融合css
  • 道可云人工智能元宇宙每日资讯|2024国际虚拟现实创新大会将在青岛举办
  • FPGA学习(10)-数码管
  • 【Kafka-go】golang的kafka应用
  • Mybatis-动态SQL
  • Skyeye 云这几年的经历
  • three.js BufferAttribute
  • 计算机网络(九) —— Tcp协议详解
  • python-比较月亮大小/数组下标/人见人爱a+b
  • Webpack 5的新特性:Asset Modules与Dynamic Import
  • Linux快速安装ClickHouse(附官方文档)
  • 【QT 5 调试软件+Linux下调用脚本shell-无法调度+目录拼写+无法找目录+sudo权限(2)+问题解决方式+后续补充】
  • Java中的位图和布隆过滤器(如果想知道Java中有关位图和布隆过滤器的知识点,那么只看这一篇就足够了!)
  • android11 自动授权访问sdcard
  • ChatGPT 向更多用户推出高级语音模式:支持 50 种语言;字节发布两款新视频生成大模型丨 RTE 开发者日报
  • 多城联动、多形式开展网安周公益活动,开源网安传播网络安全知识
  • 解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
  • 自适应查询优化(Adaptive Query Optimization, AQO)技术简介
  • Circular dependency between the following tasks(gradle循环依赖的问题)
  • 828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署经典扫雷小游戏
  • easyExcel导出包括相同列id相同合并单元格,明细导出
  • Python项目Flask框架整合Redis
  • python中SortedList类的用法详解
  • VMware提供虚拟硬盘并使得Oracle Linux集群共享块设备并绑定raw设备。