8.50. Python-3.10.6

Python 3 软件包包含 Python 开发环境。它被用于面向对象编程,编写脚本,为大型程序建立原型,或者开发完整的应用。

估计构建时间: 3.4 SBU
需要硬盘空间: 283 MB

8.50.1. 安装 Python 3

准备编译 Python:

./configure --prefix=/usr        \
            --enable-shared      \
            --with-system-expat  \
            --with-system-ffi    \
            --enable-optimizations

配置选项的含义:

--with-system-expat

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

--with-system-ffi

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

--enable-optimizations

该选项启用稳定,但在编译期成本较高的优化。

编译该软件包:

make

不建议在此时运行测试。在不完整的 LFS 环境中,测试可能会永远陷入等待状态。如果希望运行测试,可以在本章结束时,或者在 BLFS 中重新安装 Python 3 时再运行测试。如果一定要进行测试,运行 make test

安装该软件包:

make install

在本书中,我们以 root 用户的身份使用 pip3 命令,以便为所有用户安装 Python 3 程序和模块。而 Python 开发者推荐将软件包安装到虚拟环境或某个用户的主目录 (以该用户身份运行 pip) 中。因此,在以 root 用户身份使用 pip3 命令时,该命令会在运行结束时输出若干行警告信息。这项建议的主要目的是防止与系统包管理器 (如 dpkg) 发生冲突,但是 LFS 没有系统包管理器,所以不会出现此类问题。另外, pip3 在运行时会尝试检查它本身是否有新版本。由于 LFS chroot 环境中没有配置域名解析功能,新版本检查会失败并产生警告。在引导 LFS 系统并配置网络连接后,如果有新版本可用,该命令会输出警告,提示用户使用来自 PyPI 的预先构建的 wheel 包进行更新。然而 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.10.6/html

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

文档安装命令的含义:

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

保证安装的文件拥有正确的所有者和权限模式。在没有这些选项的时候,tar 会以上游开发者使用的用户和权限模式安装文件。

8.50.2. Python 3 的内容

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

简要描述

2to3

是一个 Python 程序,读取 Python 2.x 源代码并对它进行一系列修正,转换成合法的 Python 3.x 源代码

idle3

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

pip3

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

pydoc3

Python 文档工具

python3

是一个解释性、交互性、面向对象的程序设计语言