在 CentOS 安装 Python3.7 (没有弯路)

下载Python源码包

shell 复制代码
wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz

安装前准备

安装依赖组件

shell 复制代码
yum -y install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel xz-devel

解压安装

解压到/usr/local/src目录

shell 复制代码
$ tar zvxf Python-3.7.12.tgz -C /usr/local/src
$ cd /usr/local/src/Python-3.7.12

编译前配置

shell 复制代码
$ ./configure prefix=/usr/local/python3 --enable-shared

编译构建

shell 复制代码
$ make -j8

安装Python

shell 复制代码
$ make install

清理编译产出的中间文件

shell 复制代码
$ make clean

链接构建产出的Python可执行文件到/usr/local/bin目录

shell 复制代码
$ ln -s /usr/local/python3/bin/python3 /usr/local/bin/python

链接构建产出的pip3可执行文件到/usr/local/bin目录

shell 复制代码
$ ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip

链接构建产出的Python动态库

shell 复制代码
$ ln -s /usr/local/python3/lib/libpython3.7m.so.1.0 /usr/lib/libpython3.7m.so.1.0

配置动态库

shell 复制代码
$ ldconfig

检查

检查Python版本是否安装成功

shell 复制代码
python --version

Python 3.7.12 # 正常输出,表示安装成功

注:

  • 链接到/usr/local/bin/目录不会影响系统软件(比如yum)的使用,因为 yum 工具指定的Python路径是/usr/bin/python

  • 一般情况下,PATH配置是先/usr/local/bin再/usr/bin

  • 检查python -v输出结果是否为Python 3.7.12版本,如果不是该版本,可能影响后续依赖安装和服务运行。

pypi下载源配置

pip默认是到pypi官方源下载第三方依赖包,下载速度可能会比较慢,可以考虑调整为腾讯云的pypi下载源,调整方式:

shell 复制代码
mkdir ~/.pip/
echo "extra-index-url = https://mirrors.cloud.tencent.com/pypi/simple" >> ~/.pip/pip.conf

一键安装脚本

以下脚本内容是上面的步骤集合,省去了复制粘贴的重复动作。

  • 创建文件 install_py37.sh,写入以下 shell 脚本

  • 赋予执行权限,chmox +x install_py37.sh

  • 执行脚本,./install_py37.sh

bash 复制代码
#!/bin/env bash
## 下载 Python 源码,如果已下载源码在脚本当前目录下,可注释跳过下载步骤
wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz

## 安装编译依赖组件
yum -y install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel xz-devel

## 解压安装
# 解压到/usr/local/src目录
tar zvxf Python-3.7.12.tgz -C /usr/local/src
cd /usr/local/src/Python-3.7.12
# 编译前配置
./configure prefix=/usr/local/python3 --enable-shared
# 编译构建
make -j8
# 安装Python
make install
# 清理编译产出的中间文件
make clean
# 链接构建产出的Python可执行文件到/usr/local/bin目录
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python
# 链接构建产出的pip3可执行文件到/usr/local/bin目录
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip
# 链接构建产出的Python动态库
ln -s /usr/local/python3/lib/libpython3.7m.so.1.0 /usr/lib/libpython3.7m.so.1.0
# 配置动态库
ldconfig

## 检查Python版本是否安装成功
echo -e "\033[1;42;37m[$(date "+%Y/%m/%d %H:%M:%S")] [Check]: 检查Python版本\033[0m"
python --version
echo -e "\033[1;42;37m[$(date "+%Y/%m/%d %H:%M:%S")] [Check]: 检查Python版本\033[0m"

## pypi下载源配置
mkdir ~/.pip/
echo "extra-index-url = https://mirrors.cloud.tencent.com/pypi/simple" >> ~/.pip/pip.conf
相关推荐
时空无限9 分钟前
vllm 大模型启动缓存相关环境变量 export
linux·缓存·vllm
Echo_cy_18 分钟前
基于ZYNQ-7000的Ethernet驱动配置
linux·驱动开发·嵌入式硬件·fpga开发·ethernet·zynq
ShineWinsu33 分钟前
对于Linux:模版方法类的解析以及socket、TcpSocket的封装
linux·c++·面试·socket·模板方法模式·封装·tcpsocket
D2aZXN3FhrDa7e2121 小时前
佛山乐从低预算实体店如何选择?看美诚AI自动化获客方案
运维·人工智能·自动化·佛山美诚科技有限公司
无足鸟ICT1 小时前
【RHCA+】查看变量
linux·运维·服务器
Kina_C1 小时前
Linux DNS 服务器-从高速缓存到辅助 DNS 部署指南
linux·运维·服务器·dns
suaizai_2 小时前
TypeScript 7 正式发布!Vue 暂被 “拒之门外“ !!!
linux·运维·ubuntu
慕伏白3 小时前
【慕伏白】Linux 系统如何根据端口号关闭进程
linux·运维·服务器
letisgo53 小时前
VMware Workstation + Ubuntu 26.04 LTS 小白运维部署手册
linux·运维·ubuntu
蓝创工坊Blue Foundry3 小时前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel