SUSE Linux 12 SP1升级Python3.8.8后pip安装失败及报错求解
SLES 12 SP1手动编译Python3.8报错及pip安装失败解决方案
根因说明
- zypper找不到
python3-pip包的原因:SLES 12 SP1官方源内置的Python3版本远低于3.8,python3-pip包绑定系统默认Python3版本,手动源码编译安装的Python3.8不在zypper包管理范围内,无法匹配到对应版本的pip包。 python3.8 -m test触发posix模块报错的原因:编译Python3.8前未安装完整的系统依赖库,且编译配置参数缺失导致核心内置模块编译不完整,posix作为核心系统调用模块功能残缺,触发属性丢失、系统调用异常报错。
修复步骤
- 卸载当前残缺的Python3.8安装文件
rm -rf /usr/local/bin/python3* /usr/local/bin/pip3* /usr/local/lib/python3.8
- 安装Python3.8编译所需依赖
zypper install gcc make zlib-devel libffi-devel openssl-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel
- 重新编译安装Python3.8
进入之前解压的Python-3.8.8源码目录,依次执行以下命令:
./configure --enable-optimizations --enable-shared make -j$(nproc) make altinstall
注意:使用
make altinstall而非make install,避免覆盖系统默认的Python二进制文件,引发系统工具依赖异常。
- 配置动态库链接
echo "/usr/local/lib" >> /etc/ld.so.conf.d/python3.8.conf ldconfig
- 安装对应版本的pip
Python3.8源码内置pip安装模块,直接执行以下命令安装即可,无需通过zypper安装:
python3.8 -m ensurepip --upgrade
验证方法
- 执行
python3.8 -V可正常输出Python 3.8.8版本信息 - 执行
pip3.8 -V可正常输出pip版本及绑定的Python3.8路径 - 执行
python3.8 -m test不再触发posix模块相关报错
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

