鲲鹏 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 相关文章推荐
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
nginx作grpc的反向代理踩坑总结
Jul 07 Servers
Nginx内网单机反向代理的实现
Nov 07 Servers
Nginx实现负载均衡的项目实践
Mar 18 Servers
Ubuntu Server 安装Tomcat并配置systemctl
Apr 28 Servers
Vscode中SSH插件如何远程连接Linux
May 02 Servers
配置nginx负载均衡
May 06 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
修改Nginx配置返回指定content-type的方法
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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
PHP采集利器 Snoopy 试用心得
2011/07/03 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
PHP实现递归的三种方法
2020/07/04 PHP
JS截取字符串常用方法详细整理
2013/10/28 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
Python中用Spark模块的使用教程
2015/04/13 Python
python中常用检测字符串相关函数汇总
2015/04/15 Python
Python psutil模块简单使用实例
2015/04/28 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
提高python代码运行效率的一些建议
2020/09/29 Python
python3代码中实现加法重载的实例
2020/12/03 Python
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
生物技术毕业生自荐信
2013/10/23 职场文书
服装发布会策划方案
2014/05/22 职场文书
实习护士自荐信
2014/06/21 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
Python OpenGL基本配置方式
2022/05/20 Python