CentOS 7 非 root 用户编译安装 Python 3.10

(首发地址:学习日记 CentOS 7 非 root 用户编译安装 Python 3.10 – 学习日记

本文详细介绍在 CentOS 7 上非 root 用户编译安装 Python 3.10,以能使用 bz2、ctypes、ssl 三个 Python 模块为示例,供有需要的朋友参考。

文中的代码可以复制下来保存为 bash 脚本文件,如 build_py310.sh,在当前用户下,直接 bash build_py310.sh 执行,即会在当前用户家目录下建立 build_py310 编译文件夹进行编译,并且所有文件安装在家目录下的 py310 文件夹中。在当前用户家目录下的 .bashrc 文件中会写入运行 Python 需要的环境变量 LD_LIBRARY_PATH、PATH。

编译安装完成后,执行 . ~/.bashrc 会在当前环境中设置好上述环境变量。执行 python3 即可进入当前安装的 Python 交互环境。

视频演示:【CentOS 7 非 root 用户编译安装 Python 3.10】 https://www.bilibili.com/video/BV1c8411o7FJ/?share_source=copy_web&vd_source=d1925b070926f23b2b6676137251e9ea

CentOS 7 非 root 用户编译安装 Python 3.10

一、自动下载、编译、安装脚本:

#!/bin/bash

# 建立安装和编译目录
cd
mkdir py310 build_py310 -v

# 下载源码:
cd build_py310
wget --no-check-certificate https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
wget --no-check-certificate https://gcc.gnu.org/pub/libffi/libffi-3.4.3.tar.gz
wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1u.tar.gz
wget --no-check-certificate https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz

# 编译 bzip2:
tar -xf bzip2-1.0.8.tar.gz
cd bzip2-1.0.8
make -f Makefile-libbz2_so
make
make install PREFIX=$HOME/py310
cp libbz2.so.1.0 libbz2.so.1.0.8 $HOME/py310/lib/ -v

# 编译 libffi:
cd ..
tar -xf libffi-3.4.3.tar.gz
cd libffi-3.4.3
./configure --prefix=$HOME/py310
make
# make check # 需要 expect 和 runtest
make install

# 编译 openssl:
cd ..
tar -xf openssl-1.1.1u.tar.gz
cd openssl-1.1.1u
./config --prefix=$HOME/py310
make
# make test # 需要一些 perl 模块
make install

# 编译 python:
export CFLAGS="-I$HOME/py310/include"
export LDFLAGS="-L$HOME/py310/lib -L$HOME/py310/lib64"
export PKG_CONFIG_PATH="$HOME/py310/lib/pkgconfig:$HOME/py310/lib64/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$HOME/py310/lib:$HOME/py310/lib64:$LD_LIBRARY_PATH"
export PATH="$HOME/py310/bin:$PATH"
echo "" >> $HOME/.bashrc
echo 'export LD_LIBRARY_PATH="$HOME/py310/lib:$HOME/py310/lib64:$LD_LIBRARY_PATH"' >> $HOME/.bashrc
echo 'export PATH="$HOME/py310/bin:$PATH"' >> $HOME/.bashrc
cd ..
tar -xf Python-3.10.12.tgz
cd Python-3.10.12
# ./configure --prefix=$HOME/py310 --enable-optimizations # CentOS 7 的低版本的 gcc 加上优化编译参数会报错
./configure --prefix=$HOME/py310
make
make test 2>&1 | tee py310_test.log # 保存测试过程信息
make testall 2>&1 | tee py310_testall.log # 保存全面测试过程信息
make install

exit 0

二、注意事项:

1、libffi 和 openssl 的编译测试因为需要一些额外的程序,这里没有进行。Python 的测试和全面测试都可正常进行。

2、上述编译的 Python 模块是不完整的,如 sqlite、tkinter 等模块都没有编译上。

3、对于普通的 CentOS 7 和高版本 Python 用户来说,现在使用 conda 虚拟环境安装需要的 Python 版本是一个好的选择。

三、参考链接:

1、How To Install Python 3.10 on CentOS 7 | CentOS 8 Linux Systems: https://brightwhiz.com/how-to-install-python-3-10-on-centos-7-centos-8-linux-systems/ (有问题,openssl 版本必须大于或等于 1.1.1)

2、記錄centos8 升級Python3.6到Python3.9以及可能遇到的問題 https://blog.csdn.net/m0_69082030/article/details/128639404 (gcc 8.1.0 以下版本不能使用 --enable-optimizations)

3、Linux GCC常用命令 https://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html (详细示例了 gcc 编译程序的过程)

4、pkg-config用法详解 https://blog.csdn.net/wxh0000mm/article/details/122533391 (讲了 pkg-config 的主要用途及 PKG_CONFIG_PATH 环境变量)

5、gcc -L / -l option flags https://www.rapidtables.com/code/linux/gcc/gcc-l.html

6、The -l option in GCC https://stackoverflow.com/questions/32929709/the-l-option-in-gcc

7、Guide to pkg-config https://people.freedesktop.org/~dbn/pkg-config-guide.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值