8.53. Python-3.14.0

Python 3 软件包包含 Python 开发环境。它被用于面向对象编程,编写脚本,为大型程序建立原型,或者开发完整的应用。Python 是一种解释性的计算机语言。

估计构建时间: 2.0 SBU
需要硬盘空间: 453 MB

8.53.1. 安装 Python 3

准备编译 Python:

./configure --prefix=/usr          \
            --enable-shared        \
            --with-system-expat    \
            --enable-optimizations \
            --without-static-libpython

配置选项的含义:

--with-system-expat

该选项允许链接到系统已经安装的 Expat

--enable-optimizations

该选项启用有力,但是消耗时间的优化步骤。它会两次构建解释器;在初次构建结果上运行测试,并使用测试结果优化最终构建版本的性能。

编译该软件包:

make

已知一些测试偶尔会陷入无限等待状态。因此如果需要测试编译结果,运行测试套件,但是将每个单项测试的最长运行时间限制为 2 分钟:

make test TESTOPTS="--timeout 120"

对于较慢的系统,您可能需要放宽运行时间限制,1 SBU (通过仅用单个 CPU 核心构建第一遍的 Binutils 测得) 一般来说是足够的。一些测试并不精确,因此测试套件会自动重新运行失败的测试。如果某项测试失败后在重新运行时能够通过,则应该将其视为正常通过。

安装该软件包:

make install

在本书中,我们以 root 用户身份,使用 pip3 命令,为所有用户安装 Python 3 程序和模块。这和 Python 开发者的建议不同:他们认为应该将这些包安装到虚拟环境中,或者某个用户的主目录中 (即,以该用户身份执行 pip3 命令)。只要使用 root 用户身份执行 pip3 命令,它就会输出若干行警告信息。

这项建议主要是为了避免和系统包管理器 (如 dpkg) 的冲突。LFS 没有系统包管理器,所以不存在这个问题。另外,pip3 在运行时,会检查它的最新版本。由于 LFS chroot 环境中没有配置域名解析,pip3 无法检查它的最新版本,也会输出一条警告信息。

在引导 LFS 系统并配置网络连接后,则会出现一条不同的警告信息,指示用户使用 PyPI 提供的,预先构建的 wheel 档案更新 pip3 (如果有更新的版本)。但是对于 LFS,我们认为 pip3 是 Python 3 的一部分,因此不应单独升级它。另外,使用预先构建的 wheel 包也会偏离我们的目标:从源代码构建 Linux 系统。因此,应该忽略关于 pip3 新版本的警告。如果您不想看到这些警告,可以执行以下命令,创建配置文件,以禁止这些警告:

cat > /etc/pip.conf << EOF
[global]
root-user-action = ignore
disable-pip-version-check = true
EOF
[重要]

重要

在 LFS 和 BLFS 中,我们通常用 pip3 命令构建和安装 Python 模块。请注意两份手册中的 pip3 install 命令都应该以 root 身份运行 (除非这条命令是为 Python 虚拟环境进行安装)。以非 root 用户身份运行 pip3 install 命令可能看似正常工作,但这会导致其他用户无法访问安装的模块。

pip3 install 不会自动重新安装已经安装好的模块。如果需要用 pip3 install 命令升级模块 (例如,从 meson-0.61.3 升级到 meson-0.62.0),则需要在命令行中加入 --upgrade 选项。如果由于某种原因,确实需要降级某个模块,或重新安装某个已安装的版本,需要在命令行中加入 --force-reinstall --no-deps 选项。

如果需要的话,安装预先格式化的文档:

install -v -dm755 /usr/share/doc/python-3.14.0/html

tar --strip-components=1  \
    --no-same-owner       \
    --no-same-permissions \
    -C /usr/share/doc/python-3.14.0/html \
    -xvf ../python-3.14.0-docs-html.tar.bz2

文档安装命令的含义:

--no-same-owner--no-same-permissions

保证安装的文件拥有正确的所有者和权限模式。否则,tar 会保留上游开发者使用的用户所有者和权限模式。

8.53.2. Python 3 的内容

安装的程序: idle3, pip3, pydoc3, python3, 以及 python3-config
安装的库: libpython3.14.so 和 libpython3.so
安装的目录: /usr/include/python3.14, /usr/lib/python3 以及 /usr/share/doc/python-3.14.0

简要描述

idle3

一个封装脚本,启动支持 Python 语法的 GUI 文本编辑器。要运行这个脚本,必须在 Python 之前安装 Tk,从而构建 Tkinter Python 模块。

pip3

Python 包安装器。您可以使用 pip 安装来自 Python 软件包目录或其他目录的包。

pydoc3

Python 文档工具

python3

是 Python 的解释器,Python 是一种解释性的、交互的、面向对象的程序设计语言