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

centos7源码编译安装python3

centos7源码编译安装python3

下载源码包安装

这里我安装的3.10.6版本
官网链接下载地址: https://www.python.org/ftp/python/3.10.6/
使用浏览器和wget都可以:

## 安装依赖和工具:
yum install zlib-devel bzip2-devel opssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc libffi-devel  wgetwget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz

源码包安装完成之后,进行解压即可:

cd /opt
tar  -xvf Python-3.10.6.tgz
mv Python-3.10.6 /usr/local/

编译安装

进入到对应目录下面,执行编译安装

cd  /usr/local/Python-3.10.6 
./configure
make & make install

执行对应的编译安装命令即可.

踩坑记录
因为之前遇到过安装之后,Python的ssl模块使用报错,说是找不到,所以需要再编译的时候进行处理,
先修改配置文件指定openssl

## 查询位置
find / -name "openssl" -type d 2>/dev/null
# 我的是在这里,/usr/include/openssl## 检查当前openssl模块的版本
openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017
# 这里我的版本太低了,与python3的不兼容了,指定这个编译安装时会报错,所以需要安装高版本的

安装高版本的openssl

# 安装编译依赖
yum install -y wget make gcc gcc-c++ perl# 下载OpenSSL源码
wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz
tar -zxvf openssl-1.1.1q.tar.gz
cd openssl-1.1.1q# 配置安装路径(建议安装到/usr/local/openssl)
./config --prefix=/usr/local/openssl \--openssldir=/usr/local/openssl \shared zlib# 编译并安装
make -j$(nproc)
make install

在修改Python编译中的配置,python3.10以后的版本OPENSSL不再是/usr/local/ssl 的默认路径,变成了/path/to/openssl/directory,而使用openssl3以上的版本的lib目录名也变成了lib64,编辑vim /你自己的Python编译源文件路径/Modules/Setup。

## 进入到目录
cd  /usr/local/Python-3.10.6/Modules
vim Setup 
## 修改下面的配置.

在这里插入图片描述
再次进行重新编译,又遇到下面的报错:
在这里插入图片描述

gcc -pthread     -Xlinker -export-dynamic -o python Programs/python.o libpython3.10.a -lcrypt -lpthread -ldl  -lutil -lm -L/usr/local/openssl/lib -lssl -lcrypto   -lm
./python -E -S -m sysconfig --generate-posix-vars ;\
if test $? -ne 0 ; then \echo "generate-posix-vars failed" ; \rm -f ./pybuilddir.txt ; \exit 1 ; \
fi
./python: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
generate-posix-vars failed
make: *** [pybuilddir.txt] Error 1

处理方式,从新指定一下动态链接库的位置:

# 查找libssl.so.1.1和libcrypto.so.1.1
find /usr/local/openssl -name "libssl.so.1.1"
find /usr/local/openssl -name "libcrypto.so.1.1"# 示例输出:
# /usr/local/openssl/lib/libssl.so.1.1
# /usr/local/openssl/lib/libcrypto.so.1.1# 创建OpenSSL配置文件
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf# 刷新动态链接器缓存
ldconfig
#清除之前编译
make clean
## 重新编译
./configure
make & make install

到这里编译安装完成了,我们来测试一下

 pip3 install requests   -i https://mirrors.aliyun.com/pypi/simple/[root@ldap bin]# python3 -c "import requests; r = requests.get('https://www.baidu.com'); print(r.status_code)"
200
[root@ldap bin]# pwd
/usr/local/bin

从这里可以看到我们的模块可以正常使用了.
我们这里安装编译之后,自动创建到/usr/local/bin下的应用程序了,也可以在其他目录正常使用了,不需要在配置软连接了.
到此Python3安装完成了.

http://www.dtcms.com/a/265767.html

相关文章:

  • SSM和SpringBoot框架的关系
  • 关于微前端框架micro,子应用设置--el-primary-color失效的问题
  • FPGA从零到一实现FOC(一)之PWM模块设计
  • 火语言 RPA:突破企业自动化瓶颈,释放数字生产力​
  • Linux基本命令篇 —— zip/unzip命令
  • Apache Commons Pool中的GenericObjectPool详解
  • 华为Freebuds 6i新音效,设置后音质敲好!
  • Nginx安全配置漏洞修复实战指南
  • 百度文心智能体平台x小米应用商店:联手打造行业首个智能体与应用市场跨端分发模式
  • React 强大的表单验证库formik之集成Yup、React Hook Form库
  • 使用 Dockerfile 构建基于 .NET9 的跨平台基础镜像
  • 安卓开机自启动方案
  • Kafka生态整合深度解析:构建现代化数据架构的核心枢纽
  • Sklearn安装使用教程
  • 机器人焊接电源节气阀
  • 工程化实践——标准化Eslint、PrettierTS
  • 读书笔记:《DevOps实践指南》
  • android 网络访问拦截器的编写的几种方式
  • React 学习(3)
  • springboot 中使用 websocket
  • PHP:从入门到实践——构建高效Web应用的利器
  • 2011年英语一
  • AlpineLinux安装x11vnc服务端实现远程桌面登录
  • Zephyr RTOS 防止中断影响数据写入
  • cv610将音频chn0配置为g711a,chn1配置为 aac编码,记录
  • ARM SMMUv3故障和错误(五)
  • mac 电脑安装Homebrew来安装npm与node成功后,安装nvm的流程
  • macOS 26正式发布,全新Liquid Glass设计语言亮相
  • join性能问题,distinct和group by性能,备库自增主键问题
  • 微信小程序在用户拒绝授权后无法使用wx.opensetting再次获取定位授权