CentOS 7.9安装Python 3.12.1/3.10.2失败,请求技术支援
CentOS7.9下Python编译安装及pip异常问题
环境与安装操作
环境:CentOS 7.9
下载Python-3.12.1.tgz后执行以下命令安装:
./configure --enable-optimizations --with-openssl=/usr/bin/openssl sudo make install
编译阶段错误
执行make时返回错误:
./_bootstrap_python ./Programs/_freeze_module.py abc ./Lib/abc.py Python/frozen_modules/abc.h Fatal Python error: init_import_site: Failed to import the site module Python runtime state: initialized Traceback (most recent call last): File "/home/admin_portal/Python-3.12.1/Lib/site.py", line 73, in <module> import os File "/home/admin_portal/Python-3.12.1/Lib/os.py", line 29, in <module> from _collections_abc import _check_methods SystemError: <built-in function compile> returned NULL without setting an exception make: *** [Python/frozen_modules/abc.h] Error 1
安装后pip调用错误
安装完成后运行/usr/local/bin/python3.12 -m pip出现错误:
Could not find platform independent libraries <prefix> Could not find platform dependent libraries <exec_prefix> Python path configuration: PYTHONHOME = (not set) PYTHONPATH = (not set) program name = '/usr/local/bin/python3.12' isolated = 0 environment = 1 user site = 1 safe_path = 0 import site = 1 is in build tree = 0 stdlib dir = '/usr/local/lib/python3.12' sys._base_executable = '/usr/local/bin/python3.12' sys.base_prefix = '/usr/local' sys.base_exec_prefix = '/usr/local' sys.platlibdir = 'lib' sys.executable = '/usr/local/bin/python3.12' sys.prefix = '/usr/local' sys.exec_prefix = '/usr/local' sys.path = [ '/usr/local/lib/python312.zip', '/usr/local/lib/python3.12', '/usr/local/lib/python3.12/lib-dynload', ] Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding Python runtime state: core initialized ModuleNotFoundError: No module named 'encodings'
当前线程 0x00007f8882742740(最近调用优先):
已尝试操作及历史问题
- 已取消设置PYTHONHOME和PYTHONPATH环境变量,问题依旧
- 此前安装的Python3.10.2运行pip时也报错:
/usr/local/bin/python3.10: No module named pip.__main__; 'pip' is a package and cannot be directly executed
解决方法
1. 修复Python3.12编译错误
问题根源
CentOS7.9默认gcc版本(4.8.5)过低,无法适配Python3.12的编译优化要求;同时--with-openssl参数路径错误,应指向openssl库目录而非二进制文件。
操作步骤
- 升级gcc到兼容版本:
sudo yum install centos-release-scl sudo yum install devtoolset-11-gcc devtoolset-11-gcc-c++ scl enable devtoolset-11 bash - 安装编译依赖库:
sudo yum install openssl-devel bzip2-devel libffi-devel zlib-devel - 重新编译安装:
先清理之前的编译残留:
重新配置(省略错误的openssl路径,让configure自动检测系统库):make clean
使用./configure --enable-optimizations sudo make altinstallaltinstall避免覆盖系统默认Python版本
2. 修复pip异常问题
针对Python3.12
若编译后仍出现encodings模块缺失:
- 检查
/usr/local/lib/python3.12/encodings目录是否存在,若不存在说明编译产物未完整复制 - 重新执行
sudo make altinstall确保文件同步完整
针对Python3.10
报错No module named pip.__main__是pip未正确安装或损坏,修复步骤:
- 获取pypa官方提供的
get-pip.py脚本 - 执行pip重装:
完成后用/usr/local/bin/python3.10 get-pip.py/usr/local/bin/python3.10 -m pip验证
3. 环境变量清理
确保无残留环境变量干扰:
unset PYTHONHOME PYTHONPATH
可将此命令加入~/.bashrc,避免后续登录时自动加载错误变量
内容的提问来源于stack exchange,提问作者snerf
相关产品推荐
相关产品推荐

