当前位置: 首页 > news >正文

在 CentOS 7 上编译安装 Python 3.11

安装必要的依赖

首先,你需要安装一些开发工具和库,以便编译 Python 和 OpenSSL:

yum -y groupinstall "Development tools"
yum install -y wget gcc-c++ pcre pcre-devel zlib zlib-devel libffi-devel zlib1g-dev openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel bzip2-devel
安装 OpenSSL

由于 CentOS 7 自带的 OpenSSL 版本较老,不满足 Python 3.10 或更高版本的要求,需要进行升级:

  1. 删除原有的 OpenSSL:

    yum remove openssl
  2. 更新信任的根证书:

    yum install ca-certificates
    update-ca-trust force-enable
    update-ca-trust extract
  3. 下载并安装最新的 OpenSSL:

    wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
    tar -zxf openssl-1.1.1w.tar.gz
    cd openssl-1.1.1w
    ./config --prefix=/usr/local/openssl
    make -j && make install
  4. 配置环境变量和链接:

    ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
    ldconfig -v
  5. 验证新版本的 OpenSSL:

    openssl version
安装 Python 3.11
  1. 下载 Python 3.11 的源码:

    wget https://www.python.org/ftp/python/3.11.7/Python-3.11.7.tgz
    tar xvzf Python-3.11.7.tgz
    cd Python-3.11.7
  2. 如果需要,更新 gcc 版本以支持性能优化:

    yum install centos-release-scl -y
    yum install devtoolset-10-gcc* -y
    source /opt/rh/devtoolset-10/enable
  3. 配置并编译 Python:

    ./configure --prefix=/usr/local/python3.11 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto --enable-optimizations
    make -j && make altinstall
  4. 创建软链接以方便调用:

    ln -sf /usr/local/python3.11/bin/python3.11 /usr/bin/python3.11
    ln -sf /usr/local/python3.11/bin/pip3.11 /usr/bin/pip3.11
  5. 验证安装:

    python3.11 -V
    pip3.11 -V
使用虚拟环境

推荐在项目中使用虚拟环境,以避免影响全局环境:

cd /www/program/some-project
python3.11 -m venv venv
source venv/bin/activate

这样,你的项目环境将与全局环境隔离,可以更安全地管理依赖。

这个整理版既详细又条理清晰,便于你在实际操作或分享时使用。如有其他需求或需要进一步帮助,请告诉我!

http://www.lryc.cn/news/404312.html

相关文章:

  • Qt 4.8.7 + MSVC 中文乱码问题深入分析
  • IDEA的常见代码模板的使用
  • arcgis怎么选取某个指定区域地方的数据,比如从全国乡镇数据选取长沙市乡镇数据
  • 二、链表(1)
  • KAFKA搭建教程
  • Linux网络——套接字与UdpServer
  • SpringBoot源码深度解析
  • 【Qt】常用控件
  • electron 主进程和渲染进程通信
  • 【ARM】MDK-解决CMSIS_DAP.DLL missing报错
  • CSS 的环境变量函数env()
  • 数学建模--国赛备赛---TOPSIS算法
  • 均值滤波算法及实现
  • 【Apache Doris】周FAQ集锦:第 16 期
  • 单例模式_Golang
  • 代码随想录 day 18 二叉树
  • 降雨量预测 | Matlab基于ARIMA-RBF降雨量预测
  • 包含示例和模板的流程文档指南
  • 51单片机嵌入式开发:15、STC89C52RC操作蜂鸣器实现一个music音乐播放器的音乐盒
  • B树(B-Tree)数据结构
  • 【BUG】已解决:ModuleNotFoundError: No module named ‘torch‘
  • 数据结构——队列(链式结构)
  • 解决GoLand添加GOROOT提示The selected directory is not a valid home for Go Sdk的问题
  • 51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动TFT大屏_I2C_HW参考代码(v1.3) 硬件I2C方式
  • 【Python其他检查字符串占字节数的方法】
  • 梧桐数据库: 数据库技术中的重写子查询技术
  • PHP连接MySQL数据库
  • STM32自己从零开始实操:PCB全过程
  • error `slot` attributes are deprecated vue/no-deprecated-slot-attribute
  • Websocket自动消息回复服务端工具