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

CentOS7编译安装Python3.12记录

本文记录编译安装过程中遭遇的问题供大家参考

安装环境

CentOS 7.1611,环境中自带一个Python 3.7。由于该环境是作业环境无法联网,不便于安装Python虚拟环境且卸载原有的Python可能会影响原有的作业流程,本次安装将实现新老Python的共存,新版本Python通过环境变量初始化脚本切换。

依赖安装

openssl

Python 3.12要求的openssl最低版本为1.1.1,环境中自带的1.0.2k无法使用。同时为了保证不影响作业环境中原有的openssl库,新版本应独立安装于/opt目录下以免影响原有版本。

首先至openssl的GitHub仓库下载源码,在此我下载的是OpenSSL 1.1.1q。依次执行解压与编译安装命令,安装路径我设定为/opt/openssl/openssl-1-1-1q,参考编译安装命令如下,命令行选项后的“=”不可省略。

$ ./config --prefix="/opt/openssl/openssl-1-1-1q" && make -j && make install

libffi-devel

Python标准库中的部分依赖模块(例如_ctypes等)依赖于libffi,若缺失虽可正常编译Python源码,但在运行阶段会出现“No moduled named '_ctypes' ...”报错。由于本次Python安装是编译安装,因此需要安装devel包才会有相关的头文件进行正常的编译。对应的RPM包直接从centos-vault源上获取即可,此处为下载至本地后安装。

$ rpm -ivh libffi-devel-3.0.13-18.el7.x86_64.rpm

libb2

libb2是Python依赖的一个加密算法库,在3.14版本中似乎已移除该依赖关系。对于该库同样也是编译安装。由于系统中原本不存在该库,在此我计划直接编译安装至/usr目录下。首先从GitHub项目主页获取源码(我选择的是最新的v0.98.1版本),解压后依次执行编译安装步骤。

$ ./autogen.sh
...
$ ./configure --prefix=/usr && make -j && make install
...

安装完成后需要至/usr/lib目录下确认库文件是否存在。此外还需要将源码目录下的libb2.pc文件拷贝至/usr/lib/pkgconfig目录下,执行如下命令,若无任何回显表明库已可被正常使用

$ pkg-config --exists --print-errors "libb2"

若系统提示需要添加pkg-config搜索路径,可尝试在~/.bashrc文件末尾处追加如下行

export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/pkgconfig"

然后执行如下命令生效

$ source ~/.bashrc

bzip2-devel、gdm-devel、libuuid-devel、readline-devel、tkinter

安装方式同libffi-devel。

编译安装

首先需要到Python官网下载源码包至本地并解压。参考的编译命令如下,需要注意执行configure脚本时需要显式指定部分前序步骤中安装的依赖库。为避免与系统中原有的Python冲突,在此通过configure脚本的--prefix参数将新版本Python安装至/opt/Python/python312路径下

$ ./configure --prefix /opt/Python/python312 --enanble-optimizations --with-openssl=/opt/openssl/openssl-1-1-1q --with-openssl-rpath=auto OPENSSL_LDFLAGS=-L/opt/openssl/openssl-1-1-1q/lib OPENSSL_LIBS=/opt/openssl/openssl-1-1-1q/lib OPENSSL_INCLUDES=/opt/openssl/openssl-1-1-1q/include

环境变量修饰

最后还需修改环境变量才能让新版本的Python可以被操作系统正常识别与运行,可以封装为一个名为enable的Bash Shell脚本放置于Python安装目录下。

#!/bin/bash

instdir="/opt/Python/python312"

export PYTHONHOME="$instdir"
export PYTHONPATH="$instdir/lib/python3.12/site-packages"
export PATH="$instdir/bin:$PYTHONPATH/bin:$PATH"
export LD_LIBRARY_PATH="$instdir:$LD_LIBRARY_PATH"

在运行新版本Python可手动使用source命令调用该脚本,或集成至~/.bashrc脚本中。

$ chmod 755 /opt/Python/python312/enable
$ source /opt/Python/python312/enable


http://www.kler.cn/news/366878.html

相关文章:

  • c++:string类
  • Docker无法拉取镜像解决办法
  • Linux中安装Tomcat
  • Springboot 使用EasyExcel导出Excel文件
  • 密码md5加密处理
  • ubuntu常用文件操作
  • YOLO11 图像缩放 | 图像填充 | 自适应不同尺寸的图片
  • Llama3微调后合并:推动自然语言处理的新进展
  • K8s中TSL证书如何续期
  • 八:Python学习笔记--基础知识(7)流程控制
  • 宠物用品在线交易网站:SpringBoot技术全攻略
  • MongoDB快速入门
  • RestHighLevelClient操作es查询文档
  • C#字符串格式化之String.Format
  • 【分布式知识】分布式对象存储组件-Minio
  • Linux文件描述符详解及其应用
  • 虚拟光驱软件 PowerISO v8.7.0 中文激活版
  • 正大金融市场的跨境投资机遇与挑战分析
  • 活体检测API对接php语言方式-人脸静态/动态活体检测免费
  • 青少年编程与数学 02-002 Sql Server 数据库应用 07课题、表的操作
  • java程序设计2(一)
  • HarmonyOs next 跟着开发文档学习-判断api是否可以使用
  • 油豆视频油豆影视app系统源码-试看/付费/免费/vip
  • Vue全栈开发旅游网项目首页
  • SQL查询
  • 2024年MathorCup妈杯大数据竞赛选题人数发布