鲲鹏 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 相关文章推荐
Nginx的rewrite模块详解
Mar 31 Servers
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
Jul 07 Servers
图文详解Nginx版本平滑升级方案
Sep 15 Servers
Nginx实现负载均衡的项目实践
Mar 18 Servers
使用Docker容器部署rocketmq单机的全过程
Apr 03 Servers
Nginx+Tomcat负载均衡多实例详解
Apr 11 Servers
Windows Server 2012 R2 磁盘分区教程
Apr 29 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
本地搭建minio文件服务器(使用bat脚本启动)的方法
Jul 15 Servers
Docker容器harbor私有仓库部署和管理
Aug 05 Servers
教你使用Ubuntu搭建DNS服务器
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
PHP中for循环语句的几种变型
2007/03/16 PHP
mysql 性能的检查和优化方法
2009/06/21 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
微信红包随机生成算法php版
2016/07/21 PHP
php扩展开发入门demo示例
2019/09/23 PHP
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
详解javascript中的Error对象
2019/04/25 Javascript
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python 获取url中的参数列表实例
2018/12/18 Python
Python循环结构的应用场景详解
2019/07/11 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
2020/02/03 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
Python argparse模块使用方法解析
2020/02/20 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
公司董事长职责
2013/12/12 职场文书
管理建议书范文
2014/05/13 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书