Linux下升级Python3.9.6至3.12.3时make步骤报错求助
当前Linux机器Python版本为3.9.6,尝试通过以下命令升级至3.12.3:
./configure --enable-optimizationsmakesudo make install
执行make步骤时触发错误:
Fatal Python error: init_import_site: Failed to import the site module
Python runtime state: initialized
Traceback (most recent call last):
File "/root/Python-3.12.3/Lib/site.py", line 73, in
import os
File "/root/Python-3.12.3/Lib/os.py", line 29, in
from _collections_abc import _check_methods
SystemError:returned NULL without setting an exception
make[1]: *** [Python/frozen_modules/abc.h] Error 1
make[1]: Leaving directory `/root/Python-3.12.3'
make: *** [profile-opt] Error 2
[root@auto-controller Python-3.12.3]#
已尝试make clean、重新执行./configure --enable-optimizations后再次make,问题未解决。
针对该编译错误,可尝试以下几种解决方法:
1. 禁用PGO优化编译
--enable-optimizations会触发PGO(Profile-Guided Optimization)优化,可能与当前系统环境冲突。改用基础配置流程:
- 执行彻底清理:
make distclean(比make clean更彻底,清除所有生成的配置文件和编译产物) - 重新配置:
./configure - 编译安装:
make && sudo make install
若仍需优化,可尝试单独添加部分安全的优化参数,例如:./configure --enable-shared --with-lto,避开PGO相关逻辑。
2. 补全依赖库
Python 3.12.3所需依赖比3.9.6更全面,先安装缺失的编译依赖:
- Debian/Ubuntu系列:
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
- RHEL/CentOS/Rocky Linux系列:
sudo dnf groupinstall "Development Tools" sudo dnf install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
安装完成后,重新执行make distclean && ./configure --enable-optimizations && make。
3. 避免以root用户编译
root用户编译可能触发权限或环境变量异常,建议切换普通用户操作:
- 创建普通用户:
useradd -m pybuilder - 切换用户:
su - pybuilder - 重新解压Python源码包,执行编译流程
- 编译完成后,再以root身份执行
sudo make install
4. 检查编译器版本
Python 3.12.3要求GCC版本≥8.1或Clang版本≥10,先检查当前编译器版本:
gcc --version clang --version
若版本过低,先升级编译器后再重新编译。
内容的提问来源于stack exchange,提问作者Raghavendra Somu

