通过源码编译安装 Python (Linux、Mac 均适用)

前言:
开篇忠告:
不要手贱:centos8版本等系统一般都会自带集成python3及python版本,以供系统底层调用,最好不要以来就删除系统中的python旧版本及其目录结构,保险起见,最好不要卸载旧版币,以免系统依赖出错。新版本安装完后把系统中相关配置指向新版本所在目录,做相关配置即可。

1.为确保安装中不会因权限不够而导致错误或失败,须用root权限来执行,如果不是在root权限下,用“sudo”命令获取最高权限后执行命令,即每条命令前面加“sudo”,输入root账号的密码。
2.笔者更新此博文时Python官方已经更新版本至3.10.1,请根据项目或开发需求选择合适的版本进行安装(官网地址:https://www.python.org ),方法同下;版本号自己按照实际情况修改;
3.建议安装前保留旧版Python,在新目录中安装新版本,然后再执行旧版本的卸载和移除操作:示例如下

(1)安装必备的系统组件和编译工具等:

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc* make -y

一、下载 Python 安装包
进入 Python 官网 下载
注:Linux 通过 wget 下载即可(安装包链接按版本在官网看),如

cd /opt && wget https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tgz

二、解压 Python 安装包
1、Mac
双击自动解压。或在终端中执行命令解压
2、Linux
(根据你所下载个Python3源码压缩包格式和名字选择对应命令解压缩,更多解压缩命令请具体查看Linux命令手册)

xz -d Python-3.10.1.tar.xz

tar xvf Python-3.10.1.tgz

tar -xf Python-3.10.1.tar

本文安装使用.tgz格式文件,故选用:tar xvf Python-3.10.1.tgz

三、释放编译文件
如果是root管理员账号登入安装,可以免除sudo命令,否则请务必使用sudo赋予最高执行权限:

cd Python-3.10.1
sudo ./configure --prefix=/usr/local/python3.10 --enable-optimizations

注:先 cd 到解压后的 Python 安装包目录

四、编译

sudo make

五、安装

sudo make install

查看安装后系统中所生效的Python3版本

Python3 --version

六、安装中的一点注意事项:
如果系统中存在老版本的Python,比如Python 3.6.8,那么此命令执行后仍然显示老版本号,

[root@192 Python-3.10.1]# python3 --version
Python 3.6.8

这时候需要做一些修改配置:

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

注意:这里如果存在老版本的软链接指向,则会报错如下:

[root@192 Python-3.10.1]# ln -s /usr/local/python3.10/bin/python3 /usr/bin/python3
ln: failed to create symbolic link '/usr/bin/python3': File exists

这里先对存在的软链接作删除处理,然后再创建软链接,命令如下:

rm ln /usr/bin/python3
ln -s /usr/local/python3.10/bin/python3 /usr/bin/python3
[root@192 Python-3.10.1]# rm ln /usr/bin/python3
rm: cannot remove 'ln': No such file or directory
rm: remove symbolic link '/usr/bin/python3'? yes
[root@192 Python-3.10.1]# ln -s /usr/local/python3.10/bin/python3 /usr/bin/python3
[root@192 Python-3.10.1]# python3 --version
Python 3.10.1

当执行python3 --version显示版本为所安装的最新版本Python 3.10.1,此时大功告成

七、参考资料
本文基于互联网博文及博主亲自测试经验整理,安装测试环境为macOS Catalina,macOS Big Sur,CentOS 8

附注:编译安装命令参考

CentOS 源码编译安装 Python3
准备#

yum -y install wget gcc make libffi-devel zlib-devel readline-devel bzip2-devel ncurses-devel sqlite-devel gdbm-devel xz-devel tk-devel openssl-devel

说明:

Copy

yum install wget gcc make readline-devel

解决 import bz2 报错

yum install  bzip2-devel

解决 import curses 报错

yum install  ncurses-devel

解决 import sqlite3 报错

yum install sqlite-devel

解决 _dbm _gdbm 缺失提醒

yum install gdbm-devel

解决 _lzma 缺失提醒

yum install xz-devel

解决 _tkinter 缺失提醒

yum install tk-devel

解决 readline 缺失提醒及方向键行为非预期的问题

yum install readline-devel
yum install zlib-devel

解决ImportError: No module named ‘_ctypes’ 错误

yum install libffi-devel

在Python官网下载

wget https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tar.xz # 下载
xz -d Python-3.10.1.tar.xz
tar -xvf Python-3.10.1.tar # 解压缩

过程#
配置#

cd Python-3.10.1
./configure --prefix=/usr/local/python3.10 --enable-optimizations

–prefix指定了预期安装目录
–enable-optimizations优化选项

生成了Makefile文件,这个过程不会自动创建/usr/local/python3.7目录。
编译#

依然在Python-3.7.1目录下

make -j8

安装#

make install

/usr/local/python3.7目录被创建了,执行安装。
环境配置#

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

卸载#

如果养成好的习惯,使用了–prefix参数,那么仅需要删除对应文件夹,去除相关环境变量即可。否则需要进入源码的src文件夹下,执行make uninstall。

怎么卸载用 make install 编译安装的软件?

补充#

安装好之后,输入python3即可使用,pip3也可以使用。发现机器本身自带的python2对应的pip无法使用,于是重新安装一下pip:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

参考:#

Install-Python3.6-on-CentOS7
Linux编译安装中configure、make和make install各自的作用
Linux ./configure && make && make install 编译安装和卸载
详解如何用源代码安装软件,以及如何卸载它
centos7下编译安装vim8,并支持python3 轻易别升级Vim

分类: Python
标签: 编译, 环境

你可能感兴趣的:(Python项目实战,编程语言学习笔记,大数据,数据挖掘与数据仓库,macos,linux,Python3,CentOS,Python源码编译安装)