You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
    
  • 重新编译安装:
    先清理之前的编译残留:
    make clean
    
    重新配置(省略错误的openssl路径,让configure自动检测系统库):
    ./configure --enable-optimizations
    sudo make altinstall
    
    使用altinstall避免覆盖系统默认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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:04:52