国产化设备鲲鹏CentOS7上源码安装Python3.7的过程详解

作者:oscar.chen 时间:2023-04-23 14:08:42 

具体编译过成与正常的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一下就成。

来源:https://www.cnblogs.com/oscar2960/p/16253769.html

标签:CentOS7,Python3.7,国产化设备鲲鹏
0
投稿

猜你喜欢

  • pyinstaller打包遇到的问题解决

    2021-07-22 07:56:24
  • DOM 精简知识教程

    2013-07-18 07:28:33
  • Python利用re模块实现简易分词(tokenization)

    2021-06-12 20:07:59
  • Pygame与OpenCV联合播放视频并保证音画同步

    2021-09-04 22:23:11
  • Vue页面手动刷新,实现导航栏激活项还原到初始状态

    2024-05-03 15:11:44
  • Python安装第三方库攻略(pip和Anaconda)

    2023-02-01 22:16:41
  • 解决Jupyter Notebook使用parser.parse_args出现错误问题

    2023-05-09 17:41:42
  • 使用Pytorch如何完成多分类问题

    2022-01-06 20:18:46
  • Anaconda的安装与虚拟环境建立

    2022-05-26 01:06:22
  • PyCharm配置mongo插件的方法

    2023-08-16 19:37:05
  • Python开发之迭代器&生成器的实战案例分享

    2021-03-18 17:34:33
  • iframe高度自适应,兼容IE,FF

    2008-06-18 12:15:00
  • JS基于面向对象实现的选项卡效果示例

    2024-04-19 10:42:56
  • 解决sql server保存对象字符串转换成uniqueidentifier失败的问题

    2024-01-20 01:22:59
  • python中可以发生异常自动重试库retrying

    2022-03-26 02:23:06
  • MySQL命令行导出与导入数据库

    2024-01-14 03:30:14
  • 滑动展开/收缩广告代码实例效果

    2007-10-09 12:44:00
  • 布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)

    2021-01-02 08:46:49
  • 利用Go语言实现轻量级OpenLdap弱密码检测工具

    2024-04-25 15:30:43
  • VS2019连接mysql8.0数据库的教程图文详解

    2024-01-13 12:54:26
  • asp之家 网络编程 m.aspxhome.com