鲲鹏 CentOS 7 安装Python3.7


Posted in Servers onMay 11, 2022

具体编译过成与正常的Python源代码在x86平台上的过程无异,此篇随笔仅当用作复制黏贴的备忘录。不得不说在一个老旧系统上安装一个老旧的Python版本,从头编译一个Python还是一个较为稳健的选择。

获取源代码

Python官网处下载所需源码版本[https://www.python.org/downloads/source/]

curl -O https://www.python.org/ftp/python/3.7.13/Python-3.7.13.tgz

准备工作(安装依赖)

其实依赖不装全也是能够顺利编译完成的,只不过在make阶段会放弃部分组件的构建如压缩算法和ssl,tk一类的组件,但是有条件还是建议装全咯。

yum install -y gcc make
yum install -y openssl openssl-devel openssl-static bzip2 bzip2-devel ncurses ncurses-devel readline readline-devel xz lzma xz-devel sqlite sqlite-devel gdbm gdbm-devel expat-devel tk tk-devel tcl tcl-devel libffi libffi-devel

生成Makefile

这边主要注意下几个参数,--enable-shared生成动态依赖库(非必要),--prefix 指定Python安装目录(务必指定,尤其在有多个python环境下的时候,你也不想覆盖了系统自带的Python导致系统组件如yum一类的挂掉),--enable-optimizations(优化参数非必要)。还有就是,如果你的openssl安装到了其他目录或是有多openssl的环境请使用--with-openssl=DIR指定你使用的openssl版本,这在低版本操作系统下构建高版本python时非常重要,已centos7为例子它自带的openssl-1.0.2不足以用于构建Python3.10(python3.10需要openssl 1.1.1以上),但是贸然的修稿系统的openssl版本会导致其余依赖程序的崩溃,所以你只能在特定目录下安装openssl并使用。

# 解压源码包
tar zxvf Python-3.7.13.tgz && cd Python-3.7.13
# 生成Makefile
./configure --enable-shared --prefix=/usr/local/python3.7 --enable-optimizations

构建&&安装

有一说一在鲲鹏这种主频较低的cpu上编译着实挺慢的

make && make install

添加环境变量

echo 'export PATH="$PATH:/usr/local/python3.7.3/bin"' >> /etc/profile

其他小问题

找不到libpython3.7m.so.1.0

[root@localhost Python-3.7.13]# python3
python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

把libpython3.7m.so.1.0放到系统能找到的地方便是

# 在编译的目录下
cp -f libpython3.7m.so.1.0 /lib64

升级pip上的小坑

如果你要保证在多python环境下(python2和python3共存)下升级pip,建议使用

curl https://bootstrap.pypa.io/get-pip.py | python3

来升级,已保证升级过程不会错误的调用python2

影响pyinstaller打包后python程序移植性的因素

除了cpu的架构,操作系统位数以外不谈(这些太容易被注意了),指的注意的是glib版本。如果你的编译环境有升级内核的行为导致glibc版本被改变了,高版本的打包后程序是无法在低版本的glibc系统上运行的(反过来没问题)。所以如果想让打包的程序在尽可能多的操作系统上运行请在低版本的glibc上构建你的程序,这边有一个建议的组合centos5.8+python3.6.1,应该是一个较为极限的组合了,glibc版本2.5。 你要问咋看?ldd --version一下就成。

到此这篇关于国产化设备鲲鹏CentOS7上源码安装Python3.7的文章就介绍到这了!


Tags in this post...

Servers 相关文章推荐
Linux安装Nginx步骤详解
Mar 31 Servers
Nginx域名转发使用场景代码实例
Mar 31 Servers
详解Nginx 被动检查服务器的存活状态
Oct 16 Servers
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
Apr 07 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
Windows server 2012 R2 安装IIS服务器
Apr 29 Servers
tomcat默认最大连接数及相关调整方法
May 06 Servers
Zabbix对Kafka topic积压数据监控的问题(bug优化)
Jul 07 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
windows server2016安装oracle 11g的图文教程
Jul 15 Servers
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
Aug 14 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
Sep 23 Servers
在容器中使用nginx搭建上传下载服务器
May 11 #Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 #Servers
nginx 配置缓存
May 11 #Servers
Nginx的gzip相关介绍
May 11 #Servers
详解如何使用Nginx解决跨域问题
May 06 #Servers
配置nginx负载均衡
May 06 #Servers
tomcat下部署jenkins的方法
You might like
10条PHP编程习惯助你找工作
2008/09/29 PHP
php判断终端是手机还是电脑访问网站的思路及代码
2013/04/24 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
selenium自动化测试入门实战
2020/12/21 Python
什么是设计模式
2012/06/17 面试题
团队拓展活动总结
2014/08/27 职场文书
2014年终个人总结报告
2015/03/09 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
python开发实时可视化仪表盘的示例
2021/05/07 Python
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
python_tkinter弹出对话框创建
2022/03/20 Python