时间 | 内容 |
---|---|
2022/3/26 | 本文第一版 |
2023/3/6 | 确认本文内容对于Python 3.11.2依然有效 |
2023/9/9 | 新增deepin20.9依赖项安装参考命令 |
Python 3.10.3 编译安装
一.系统环境
操作系统:AlmaLinux release 8.5 (Arctic Sphynx);
ps:等同于redhat 8.5;其实我小改了更新源把AlmaLinux折腾成了AlmaLinux Stream;
系统安装:选择Server with GUI,不附带其他安装包;
内核版本:4.18.0-348.20.1.el8_5.x86_64;
python源码版本:3.10.3(理论上python没啥太大特性更替的话后续版本也适用)
二.Python安装
- 谁都不会把这一步省略了吧(手动狗头)
dnf install gcc make
- 官网下载安装包
wget #####/ Python-3.10.3.tar.xz 网址省略,官网自己找
- 解压缩安装包
xz -d Python-3.10.3.tar.xz
tar -xvf Python-3.10.3.tar
cd Python-3.10.3/
- 习惯性新建一个用户
groupadd test
useradd -g test test -s /sbin/nologin
- 编译命令
ps:编译完成后由于系统安装包环境的问题,make执行后会不同程度提示一些模块未安装,具体措施见下方FAQ
./configure --prefix=/usr/local/python310 --enable-optimizations
make
make altinstall
(好像记得官方推荐用altinstall,当然install也OK)
- 修改重要文件夹的权限,扫清设置环境变量后python文件的执行障碍
chown -R test.test /usr/local/python310/lib
chown -R test.test /usr/local/python310/bin
- 设置环境/环境变量
ln -s /usr/local/python310/bin/python3.10 /usr/bin/python310
ln -s /usr/local/python310/bin/pip3.10 /usr/bin/pip310
vi /root/.bashrc
vi /home/【用户】/.bashrc
抄袭java的环境变量设置(手动流汗)
############################
export python_home310=/usr/local/python310
export PATH=.:$python_home310/bin:$python_home310/lib:$PATH
- 验证是否安装成功(python3.6是系统自带的)
然后可以无聊,pip310 install speedtest-cli玩玩(手动滑稽)
FAQ
未安装模块对应的包如下,有些个包和模块我没有一一对应上的,以后慢慢补充;直接执行下方命令即可。
#redhat系列适用
dnf install uuid-devel bzip2-devel ncurses-devel xz-devel openssl-devel libffi-devel tcl-devel tk-devel readline-devel zlib-static gdbm-devel libnsl2-devel sqlite-devel
#deepin 20.9适用
apt install libsqlite3-dev libbz2-dev libncurses-dev libgdbm-dev libgdbm-compat-dev tk-dev libreadline-dev liblzma-dev
最终只剩下_abc 、pwd、time;
ps:我鸟语比较烂,这段提示,翻译过来大概是makefile已经搞定这三个模块了,不用dnf找安装包了(不知道有没有理解错)。
缺失模块 | 对应安装包 |
---|---|
_bz2 | bzip2-devel |
_curses | ncurses-devel |
_curses_panel | |
_dbm | |
_gdbm | |
_hashlib | 安装openssl-devel的时候顺带搞定了 |
_lzma | |
_sqlite3 | sqlite-devel |
_ssl | |
_tkinter | |
_uuid | uuid-devel |
nis | libnsl2-devel |
readline | readline-devel |
zlib | zlib-static |
_ctypes | |
Python requires a OpenSSL 1.1.1 or newer | openssl-devel |