CentOS 7.9 安装 Python 3.10 详细步骤及常见问题解决

一、环境准备与依赖安装
  1. 更新系统与开发工具

    sudo yum update -y
    sudo yum groupinstall "Development Tools" -y
    sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel \
    readline-devel tk-devel libffi-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel

    作用:安装编译 Python 所需的依赖库。若缺少依赖可能导致 _ctypes_ssl 等模块编译失败

  2. 检查 OpenSSL 版本

    openssl version
    • 若版本低于 1.1.1,需手动升级(Python 3.10 要求 OpenSSL ≥1.1.1):

      wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
      tar -zxvf openssl-1.1.1k.tar.gz && cd openssl-1.1.1k
      ./config --prefix=/usr/local/openssl shared zlib
      make && sudo make install
      # 配置系统使用新版本
      echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
      ldconfig -v
      ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

      注意:升级后需验证 openssl version 是否显示新版本。


二、编译安装 Python 3.10
  1. 下载源码并解压

    wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz
    tar -zxvf Python-3.10.12.tgz && cd Python-3.10.12
  2. 配置编译参数

    ./configure --prefix=/usr/local/python3.10 \
    --enable-optimizations \
    --with-openssl=/usr/local/openssl \
    --with-ssl-default-suites=openssl

    关键参数说明

    • --with-openssl:指定自定义 OpenSSL 路径(避免 SSL module 缺失)。

    • --enable-optimizations:优化编译性能,若编译失败可去掉此参数。

  3. 编译与安装

    make -j $(nproc) && sudo make altinstall

    使用 altinstall 而非 install:避免覆盖系统默认 Python 2.7。

  4. 验证安装

    /usr/local/python3.10/bin/python3.10 --version  # 应输出 Python 3.10.x
    /usr/local/python3.10/bin/python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)"  # 验证 SSL 模块

三、环境配置
  1. 设置全局软链接

    sudo ln -s /usr/local/python3.10/bin/python3.10 /usr/bin/python3
    sudo ln -s /usr/local/python3.10/bin/pip3.10 /usr/bin/pip3
  2. 配置环境变量

    echo 'export PATH=$PATH:/usr/local/python3.10/bin' >> /etc/profile
    source /etc/profile
  3. 修复 yum 工具冲突 修改 /usr/bin/yum/usr/libexec/urlgrabber-ext-down 文件,将 #!/usr/bin/python 改为 #!/usr/bin/python2,以解决因 Python 3 导致 yum 失效的问题。


四、常见错误及解决方法
  1. zipimport.ZipImportError: can't decompress data; zlib not available 原因:缺少 zlib-devel 库。 解决

    sudo yum install -y zlib-devel
    # 重新编译 Python
  2. ModuleNotFoundError: No module named '_ctypes' 原因:未安装 libffi-devel解决

    sudo yum install -y libffi-devel
    # 重新编译 Python
  3. SSL module is not availablepip 证书验证失败 原因:Python 未正确链接 OpenSSL。 解决

    • 确认编译时指定 --with-openssl 路径。

    • 若仍报错,手动修改 Modules/Setup 文件,添加以下内容后重新编译:

      SSL=/usr/local/openssl
      _ssl _ssl.c -DUSE_SSL -I$(SSL)/include -L$(SSL)/lib -lssl -lcrypto
      ​
  4. 动态库缺失(如 libssl.so.1.1 解决

    ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
    ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
    ldconfig -v
    ​
  5. make altinstall 后无 pip3 原因altinstall 不会自动创建 pip 软链接。 解决:手动创建软链接或通过 python3 -m ensurepip 安装。


五、优化配置
  1. 配置国内 pip 源

    mkdir -p ~/.pip && cat > ~/.pip/pip.conf << EOF
    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/
    trusted-host = mirrors.aliyun.com
    EOF
  2. 更新 pip 与 setuptools

    pip3 install --upgrade pip setuptools

总结:CentOS 7.9 安装 Python 3.10 的核心在于 OpenSSL 升级和依赖完整性检查。若遇到编译错误,优先检查依赖库是否齐全,并通过环境变量和编译参数确保 Python 正确链接所需组件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37239.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】——进程状态僵尸进程孤儿进程

目录 前言 基本进程状态 运行状态 阻塞状态 挂起状态 Linux下的进程状态 僵尸进程 孤儿进程 结语 前言 进程的状态反映了它在执行过程中的不同阶段&#xff0c;例如创建、就绪、运行、阻塞和终止等。这些状态之间的转换由操作系统的调度算法和进程的行为共同决定。通…

信创系统极速文件查找:locate 命令详解

原文链接&#xff1a;信创系统极速文件查找&#xff1a;locate 命令详解 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇信创终端操作系统上 locate 命令详解的文章。在 Linux 及信创终端操作系统&#xff08;如 统信 UOS、麒麟 KOS&#xff09;中&#xff0c;查找…

鸿蒙数据持久化之首选项

场景介绍 用户首选项为应用提供Key-Value键值型的数据处理能力&#xff0c;支持应用持久化轻量级数据&#xff0c;并对其修改和查询。当用户希望有一个全局唯一存储的地方&#xff0c;可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中&#xff0c;当用户读取…

PyTorch分布式训练中各节点如何通信

深度学习 文章目录 深度学习前言pytorch如何初始化分布式训练怎么知道要使用哪几台机器进行训练的如何根据标识进行初始化&#xff08;init_method&#xff09;如何获取进程的唯一标识rank如何实现数据如何分发 前言 同学们在处理分布式训练时经常会遇到以下几个疑问&#xff…

[数据结构]排序之 归并排序(有详细的递归图解)

一、非递归 基本思想&#xff1a; 归并排序&#xff08; MERGE-SORT &#xff09;是建立在归并操作上的一种有效的排序算法 , 该算法是采用分治法&#xff08; Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#x…

在本地跑通spark环境

官网下载spark 下载spark 解压就好 本地配置环境变量 配置环境变量&#xff08;系统环境变量&#xff09; 新增 SPARK_HOME 变量名&#xff1a;SPARK_HOME 变量值&#xff1a;F:\class\spark\Spark_env\spark-3.4.4-bin-hadoop3 配置 PATH&#xff0c;新增如下&#xff1a…

UE5材质法线强度控制节点FlattenNormal

连法 FlattenNormal内部是这样的 FlattenNormal的作用是用来调整法线强度 连上FlattenNormal后 拉高数值

Appium使用文档

Appium旨在支持许多不同平台&#xff08;移动端、网页端、桌面端等&#xff09;的UI自动化。不仅如此&#xff0c;它还旨在支持用不同语言&#xff08;JS、Java、Python等&#xff09;编写的自动化代码。 1. 环境搭建 资源下载&#xff1a; 链接: https://pan.baidu.com/s/1K5Q…

Python绘图技巧,主流绘图库

一、主流绘图库概览 1. 核心工具对比 库名称特点适用场景Matplotlib基础绘图库&#xff0c;高度可定制科学绘图、论文图表Seaborn基于Matplotlib&#xff0c;统计图表优化数据分布、关系可视化Plotly交互式可视化&#xff0c;支持网页输出仪表盘、动态数据展示Pandas内置简易…

使用LLM自动化生成微电网Simulink模型

&#x1f680; 使用LLM自动化生成微电网Simulink模型&#xff01;⚡ 在构建微电网仿真模型时&#xff0c;我们通常需要手动拖拽模块、设置参数&#xff0c;耗费大量时间。现在&#xff0c;通过结合LLM&#xff08;如 GPT-4&#xff09;与 MATLAB 脚本&#xff0c;我们可以自动…

Git常用操作之GitLab

Git常用操作之GitLab 小薛博客官网&#xff1a;小薛博客Git常用操作之GitLab官方地址 1、GitLab安装 https://gitlab.cn/install/ 1、Docker安装GitLab https://docs.gitlab.cn/jh/install/docker.html 1、设置卷位置 在设置其他所有内容之前&#xff0c;请配置一个新的…

【AI】AI编程助手:Cursor、Codeium、GitHub Copilot、Roo Cline、Tabnine

文章目录 一、基本特性对比二、收费标准三、私有部署能力1、Tabnine2、Roo Code 三、代码补全与自然语言生成代码四、安装独立的IDE安装插件安装 五、基本使用&#xff08;一&#xff09;Cursor&#xff08;二&#xff09;GitHub Copilot1、获取代码建议2.聊天1&#xff09;上下…

[贪心算法]买卖股票的最佳时机 买卖股票的最佳时机Ⅱ K次取反后最大化的数组和 按身高排序 优势洗牌(田忌赛马)

1.买卖股票的最佳时机 暴力解法就是两层循环&#xff0c;找出两个差值最大的即可。 优化&#xff1a;在找最小的时候不用每次都循环一遍&#xff0c;只要在i向后走的时候&#xff0c;每次记录一下最小的值即可 class Solution { public:int maxProfit(vector<int>& p…

康谋方案 | AVM合成数据仿真验证方案

随着自动驾驶技术的快速发展&#xff0c;仿真软件在开发过程中扮演着越来越重要的角色。仿真传感器与环境不仅能够加速算法验证&#xff0c;还能在安全可控的条件下进行复杂场景的重复测试。 本文将分享如何利用自动驾驶仿真软件配置仿真传感器与搭建仿真环境&#xff0c;并对…

Django Rest Framework 创建纯净版Django项目部署DRF

描述创建纯净版的Django项目和 Django Rest Framework 环境的部署 一、创建Django项目 1. 环境说明 操作系统 Windows11python版本 3.9.13Django版本 V4.2.202. 操作步骤(在Pycharm中操作) 创建Python项目drfStudy、虚拟环境 ​虚拟环境中安装 jdangopip install django==4.…

数据结构篇——二叉树的存储与遍历

一、引入 书接上文&#xff0c;文于此续。上文我们学到了树的存储结构&#xff0c;那么今天&#xff0c;我们来学习下几种特殊的二叉树以及关于它的各种遍历&#xff0c;让我们一起加油吧。 二、特殊的二叉树 二叉树的特殊形式这里介绍3种&#xff0c;其中需要着重记忆的有…

Vulnhub-wordpress通关攻略

姿势一、后台修改模板拿WebShell 第一步&#xff1a;进⼊Vulhub靶场并执⾏以下命令开启靶场&#xff1b;在浏览器中访问并安装好.... 第二步&#xff1a;找到外观--编辑--404.php&#xff0c;将原内容删除并修改为一句话木马&#xff0c;点击更新--File edited successfully. &…

「清华大学、北京大学」DeepSeek 课件PPT专栏

你要的 这里都打包好啦&#xff0c;快快收藏起来&#xff01; 名称 链接 团队简介 类型 DeepSeek——从入门到精通 1️⃣ DeepSeek从入门到精通「清华团队」 清华大学新闻与传播学院 新媒体研究中心 元宇宙文化实验室 PPT课件 DeepSeek如何赋能职场应用? ——从提示语…

【docker】--- 详解 WSL2 中的 Ubuntu 和 Docker Desktop 的区别和关系!

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【WSL 】--- Windows11 迁移 WSL 超详细指南 —— 给室友换一个宿舍! 开发环境一、引…

【图像处理基石】什么是HDR图片?

1. 什么是HDR图片&#xff1f; HDR&#xff08;高动态范围图像&#xff0c;High Dynamic Range&#xff09;是一种通过技术手段扩展照片明暗细节的成像方式。以下是关于HDR的详细说明&#xff1a; 核心原理 动态范围&#xff1a;指图像中最亮和最暗区域之间的亮度差。人眼能…