Python 3.10版本及其依赖项 Linux下源码编译 安装到指定路径/目录

Python 3.10版本及其依赖项 Linux下源码编译 安装到指定路径/目录

安装需求

  1. Linux 操作系统。作者本人已经在Ubuntu 20.04以及CentOS 7上成功安装。
  2. Python 3.10。截止本文章初次发布,最新版本为3.10.5。另外,由于不同版本的安装方法略有差异,此教程仅保证3.10系列版本安装。
  3. 安装Python(包括依赖项)到指定路径下,而非操作系统默认目录。有的时候,比如在服务器上,许多用户共用系统默认的Python;这样当我们需要使用指定版本的Python时,需要将它安装到我们的用户目录之中。同时,我们还要安装指定版本的依赖项;这是由于不同版本的依赖项的API不同,可能导致不兼容的问题。按照作者本人的习惯,下文中除非特别说明,将Python及其所有依赖项全部安装到$HOME/usr路径下。读者可根据自己的需要,将文中的 $HOME/usr 替换为自己想要的路径。

准备工作

添加用户环境变量。在用户路径 $HOME 下,需要把用户本人在Linux系统中的执行文件(/bin)、库文件(/lib /lib64)、头文件(/include)路径添加到环境变量中。由于作者本人默认将所有内容添加到 $HOME/usr 下,相应地,用户的执行文件在 $HOME/usr/bin ,库文件 $HOME/usr/lib 和 $HOME/usr/lib64 ,头文件 $HOME/usr/include。以此类推。
在用户的路径下,通常有一个看不见的文件.bashrc,我们用vi修改这个文件。如果有vim可用,也可以用vim替代vi。

cd $HOME
vi ./.bashrc

将以下内容添加到.bashrc的末尾。

export PATH=$HOME/usr/bin:$PATH
export LD_LIBRARY_PATH=$HOME/usr/lib:$HOME/usr/lib64:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=$HOME/usr/include:$C_INCLUDE_PATH

上述3个环境变量的路径孰先孰后可自定。按照我们希望优先使用我们指定版本的依赖项的需求,把新的路径放在前面,系统多数情况优先考虑这些路径。然后重新登录,或者执行以下命令马上生效

source ./.bashrc

Python及其依赖项

以下各项的安装完成,以在指定路径看到有新文件生成,且没有出现Error为准。
系统应该都自带了make。GCC也是需要的,尽管安装过程通常会自动检查C compiler(C语言编译器)。make和GCC的安装本文不讲述,需要率先安装;它们的安装复杂,可以参考其他文章。
如果尚未自行安装某一依赖项而安装仍然成功,可能是系统已经自带。
作者本人印象不深,可能还有遗漏的依赖项,欢迎大家在评论区补充。

libffi

截止文章发布,最新版本为3.4.2。
可以在GitHub上找到这个项目。在Releases中找到并下载libffi-3.4.2.tar.gz。下载链接 https://github.com/libffi/libffi/releases/download/v3.4.2/libffi-3.4.2.tar.gz
在文件目录执行以下命令,解压、编译安装。

tar -zxvf libffi-3.4.2.tar.gz
cd libffi-3.4.2
bash ./configure --prefix=$HOME/usr
make -j8
make install

其中,–prefix指定安装目录。make -j8表示在Makefile过程中使用多线程,此处指定为8线程,请根据电脑情况酌情选择、合理使用。
以下安装命令类似,除非特别说明,将不再重复

glibc

截止文章发布,最新版本为2.35
可以在GNU C Library下载。下载链接 https://mirrors.sarata.com/gnu/libc/glibc-2.35.tar.gz

GDBM

截止文章发布,最新版本为1.23。
可以在GNU dbm找到Downloads。下载链接 https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz
运行以下命令。

mpdecimal

截止文章发布,最新版本为2.5.1。
mpdecimal点击Downloads下载。
下载链接 https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz
运行以下命令。

bz2

截止文章发布,最新版本为1.0.8。
bzip2官网寻找下载。可以在bzip2提供的目录找到。下载链接 https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
注意输入命令略有不同。

tar -zxvf bzip2-1.0.8.tar.gz
cd bzip2-1.0.8
make install PREFIX=$HOME/usr

xz

截止文章发布,最新版本为5.2.5。
可以在SourceForge搜索XZ Utils下载。下载链接 https://jaist.dl.sourceforge.net/project/lzmautils/xz-5.2.5.tar.gz
运行以下命令。

readline

截止文章发布,最新稳定版本为8.1。
可以在The GNU Readline Library找到目录下载。下载链接 https://git.savannah.gnu.org/cgit/readline.git/snapshot/readline-8.1.tar.gz

OpenSSL

截止文章发布,最新版本为3.0.4;但是Python需要的版本为1.0或1.1,而主版本1.x中最新目前为1.1.1p。为此,这里我们将它安装到$HOME/usr/openssl-1.1.1p下
OpenSSL官网Downloads下选择下载。下载链接 https://www.openssl.org/source/openssl-1.1.1p.tar.gz
运行以下命令。注意跟以上略有不同。

tar -zxvf openssl-1.1.1p.tar.gz
cd openssl-1.1.1p
bash ./config --prefix=$HOME/usr/openssl-1.1.1p
make -j8
make install

Python

Python官网下载安装。
在Python官网上,鼠标移到Downloads;在下拉列表点击All releases;来到Python不同版本下载选择网页 https://www.python.org/downloads/ 。
本文以文章发布时最新的3.10.5为例,位于 https://www.python.org/downloads/release/python-3105/ 。
在Python 3.10.5网页最下方的表格中,Version下方Gzipped source tarball和XZ compressed source tarball两项都是源码的压缩包,都可供下载安装。本文以XZ compressed source tarball为例,点击下载得到文件Python-3.10.5.tar.xz。下载链接 https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tar.xz
运行以下命令。

tar xf Python-3.10.5.tar.xz
cd Python-3.10.5
bash ./configure --prefix=$HOME/usr --with-openssl=$HOME/usr/openssl-1.1.1p --with-openssl-rpath=auto --enable-optimizations
make -j8
make install

尝试运行

python3 --version

说明

  1. SSL是Python的pip运行重要部分。如果没有安装,或者configure设置不对,那么在make install结束后会显示_ssl没有成功安装;_ssl的缺失会导致pip安装第三方库的时候无法联网下载、更新。不同Python版本这一项可能不同,有的是–with-openssl,有的是–with-ssl。具体情况请在Python源代码目录运行以下内容参考。
bash ./configure --help
  1. Python安装过程中的–enable-optimizations是可选项,如果configure没有加的话安装流程也会提醒。

下载来源汇总

https://github.com/libffi/libffi
https://www.gnu.org/software/libc/
https://www.gnu.org.ua/software/gdbm/
https://www.bytereef.org/mpdecimal/index.html
https://sourceware.org/bzip2/
https://sourceforge.net/projects/lzmautils/
https://tiswww.case.edu/php/chet/readline/rltop.html
https://www.openssl.org/
https://www.python.org/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值