如何在CentOS系统中顺利安装Python3? – wiki基地

在 CentOS 系统中顺利安装 Python 3 的详尽指南

Python 作为一种强大且广泛使用的编程语言,在各种领域都有着举足轻重的地位。无论是 Web 开发、数据科学、机器学习还是系统管理,Python 都是不可或缺的工具。CentOS 作为一款稳定、可靠且广泛应用于服务器环境的 Linux 发行版,自然也需要 Python 的支持。

虽然 CentOS 的默认软件仓库中通常包含 Python,但版本可能相对较旧。为了充分利用 Python 3 的新特性、性能改进和更丰富的第三方库,我们通常需要在 CentOS 上安装较新版本的 Python 3。

本文将详细介绍在 CentOS 系统中安装 Python 3 的各种方法,并提供步骤说明、注意事项和常见问题解答,以确保您能够顺利完成安装过程。

1. 了解 CentOS 的 Python 环境

在开始安装 Python 3 之前,我们需要先了解 CentOS 系统中 Python 的默认情况。CentOS 通常会预装 Python 2.7,因为许多系统工具和脚本依赖于它。直接替换系统默认的 Python 2.7 可能会导致系统不稳定或某些功能无法正常使用。

因此,在 CentOS 上安装 Python 3 的最佳实践是并行安装,即同时保留系统默认的 Python 2.7 和新安装的 Python 3。这样既可以满足系统工具的需求,又可以让我们使用 Python 3 进行开发。

我们可以通过以下命令查看系统中已安装的 Python 版本:

bash
python -V
python2 -V
python3 -V

如果系统中已经安装了某个 Python 3 版本,您可能会看到类似 Python 3.6.8 的输出。如果没有安装,python3 -V 命令可能会提示找不到该命令。

2. 选择合适的安装方法

在 CentOS 上安装 Python 3 有多种方法,每种方法都有其优缺点。选择哪种方法取决于您的具体需求和系统环境。以下是几种常见的安装方法:

  • 使用 SCL (Software Collections) 仓库: SCL 是一种官方支持的机制,允许您在 CentOS 上安装和管理多个版本的软件,而不会影响系统默认的软件包。
  • 使用 IUS (Inline with Upstream Stable) 仓库: IUS 是一个第三方仓库,提供比 CentOS 默认仓库更新的软件包,包括 Python 3。
  • 从源码编译安装: 这种方法最为灵活,可以安装任意版本的 Python 3,但需要手动处理依赖关系和编译过程。
  • 使用 EPEL (Extra Packages for Enterprise Linux) 仓库: EPEL 是一个社区维护的仓库,为 Enterprise Linux(包括 CentOS)提供额外的软件包,有时候也会包含较新版本的 Python 3。
  • 使用dnf 或者 yum 包管理器安装: 在较新版本的 CentOS (例如 CentOS 8 及以上) 中, 默认的包管理器 dnf (或 yum) 通常可以直接安装较新版本的 Python 3,而无需添加额外的仓库。

下面我们将详细介绍每种安装方法的步骤和注意事项。

3. 使用 SCL 仓库安装 Python 3

SCL (Software Collections) 是一种推荐的在 CentOS 上安装多个版本软件的方法。它可以让您在不影响系统默认软件包的情况下,安装和使用较新版本的 Python 3。

步骤:

  1. 安装 SCL 仓库:

    bash
    sudo yum install centos-release-scl

  2. 安装 Python 3:

    CentOS 7:

    bash
    sudo yum install rh-python36 # 或者 rh-python38, rh-python39 等

    CentOS 8:
    SCL在CentOS 8中略有不同,通常通过dnf module来管理。你可能需要先启用对应的模块。

  3. 启用 Python 3 环境:

    bash
    scl enable rh-python36 bash # 将 rh-python36 替换为您安装的版本

    这条命令会启动一个新的 bash shell,其中 Python 3.6(或您安装的版本)将成为默认的 Python 解释器。您可以在这个 shell 中运行 Python 3 相关的命令和脚本。

  4. 验证安装:

    bash
    python -V

    应该显示您安装的 Python 3 版本。

  5. 退出 SCL 环境:

    bash
    exit

    退出这个bash shell后,系统将恢复到之前的 Python 环境。

注意事项:

  • 每次需要使用 SCL 中的 Python 3 时,都需要使用 scl enable 命令启动相应的环境。
  • 如果您希望在每次登录时自动启用 SCL 环境,可以将 scl enable 命令添加到您的 ~/.bashrc~/.bash_profile 文件中。
  • SCL 提供的 Python 版本可能不是最新的,但通常是稳定且经过测试的版本。

4. 使用 IUS 仓库安装 Python 3

IUS (Inline with Upstream Stable) 仓库提供比 CentOS 默认仓库更新的软件包,包括 Python 3。使用 IUS 仓库可以方便地安装较新版本的 Python 3。

步骤:

  1. 安装 IUS 仓库:

    CentOS 7:

    bash
    sudo yum install https://repo.ius.io/ius-release-el7.rpm

    CentOS 8:

    bash
    sudo dnf install https://repo.ius.io/ius-release-el8.rpm
    sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

    CentOS 8 上,IUS 依赖于 EPEL 仓库, 所以需要同时安装。

  2. 安装 Python 3:
    使用 yum 或者 dnf 安装所需的 Python 3 版本。例如,要安装 Python 3.9:
    bash
    sudo yum install python39 # CentOS 7
    sudo dnf install python39 # CentOS 8

    你也可以安装其他版本,如python38, python310等。

  3. 验证安装:
    bash
    python3.9 -V # 将 python3.9 替换为您安装的版本

注意事项:

  • IUS 仓库提供的 Python 版本通常比 SCL 更新,但可能不如从源码编译安装那么灵活。
  • 使用 IUS 仓库可能会与系统默认的软件包产生冲突,因此建议谨慎使用。
  • 安装完成后,您可以使用 python3.x(例如 python3.9)命令来运行 Python 3,而不会影响系统默认的 Python 2.7。

5. 从源码编译安装 Python 3

从源码编译安装 Python 3 是最为灵活的方法,您可以安装任意版本的 Python 3,并自定义编译选项。但这种方法需要手动处理依赖关系和编译过程,相对复杂一些。

步骤:

  1. 安装依赖包:

    bash
    sudo yum groupinstall "Development Tools"
    sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

    这些包提供了编译 Python 3 所需的库和工具。

  2. 下载 Python 3 源码包:

    您可以从 Python 官网下载所需的 Python 3 源码包:https://www.python.org/downloads/source/

    bash
    wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz # 替换为您需要的版本

  3. 解压源码包:

    bash
    tar -xf Python-3.9.13.tgz

  4. 配置编译选项:

    bash
    cd Python-3.9.13
    ./configure --enable-optimizations --prefix=/usr/local/python3.9 # 自定义安装路径

    --enable-optimizations 选项启用优化,可以提高 Python 的性能。--prefix 选项指定 Python 的安装路径。强烈建议使用自定义路径(如 /usr/local/python3.9),以避免与系统默认的 Python 冲突。

  5. 编译和安装:

    bash
    make -j$(nproc)
    sudo make altinstall

    make -j$(nproc) 使用所有可用的 CPU 核心进行并行编译,加快编译速度。make altinstall 使用 altinstall 选项而不是 install,以避免覆盖系统默认的 Python。

  6. 创建软链接(可选):

    为了方便使用,您可以创建软链接,将 Python 3 的可执行文件链接到 /usr/local/bin 目录下:

    bash
    sudo ln -s /usr/local/python3.9/bin/python3.9 /usr/local/bin/python3
    sudo ln -s /usr/local/python3.9/bin/pip3.9 /usr/local/bin/pip3

    这将允许您直接使用 python3pip3 命令,而无需指定完整路径。

  7. 验证安装:

    bash
    python3 -V
    pip3 -V

注意事项:

  • 从源码编译安装需要较长的时间,具体取决于您的系统配置和网络速度。
  • 确保已安装所有必需的依赖包,否则编译过程可能会失败。
  • altinstall 是非常重要的。千万不要使用 make install,那会覆盖系统自带的 python, 导致严重问题。
  • 更新已编译安装的 Python 版本需要重新下载源码包、解压、配置、编译和安装。

6. 使用 EPEL 仓库安装 Python 3 (作为备选)

EPEL (Extra Packages for Enterprise Linux) 仓库有时也会包含较新版本的 Python 3。虽然这不是首选方法,但如果 SCL 和 IUS 都不满足需求,可以尝试使用 EPEL。

步骤:

  1. 安装 EPEL 仓库:

    bash
    sudo yum install epel-release

  2. 查找可用的 Python 3 版本:

    bash
    yum list | grep python3

  3. 安装 Python 3:

    bash
    sudo yum install python3x # 将 python3x 替换为您找到的软件包名称

  4. 验证安装:

    bash
    python3x -V # 将 python3x 替换为您安装的版本

注意事项:

  • EPEL 仓库中的 Python 版本可能不是最新的,而且更新频率可能较低。
  • 使用 EPEL 仓库可能会与系统默认的软件包产生冲突,因此建议谨慎使用。

7. 使用 dnfyum 直接安装 (CentOS 8 及以上)

在较新版本的 CentOS (例如 CentOS 8 及以上) 中,默认的包管理器 dnf (或 yum) 通常可以直接安装较新版本的 Python 3,而无需添加额外的仓库。

步骤:

  1. 查找可用的 Python 3 版本:

    bash
    dnf list | grep python3 # 或 yum list | grep python3

  2. 安装 Python 3:

    bash
    sudo dnf install python3x # 将 python3x 替换为您找到的软件包名称

  3. 验证安装:

    bash
    python3x -V # 将 python3x 替换为您安装的版本

注意事项:

  • 这种方法最为简单,但可能无法安装最新版本的 Python 3。
  • 安装的版本通常是经过 CentOS 官方测试和维护的,稳定性较高。

8. 管理 Python 虚拟环境 (强烈推荐)

无论您选择哪种安装方法,都强烈建议使用 Python 虚拟环境来管理您的项目依赖。虚拟环境可以为每个项目创建一个隔离的 Python 环境,避免不同项目之间的依赖冲突。

创建虚拟环境:

bash
python3 -m venv myenv # 将 myenv 替换为您想要的虚拟环境名称

激活虚拟环境:

bash
source myenv/bin/activate

退出虚拟环境:

bash
deactivate

在虚拟环境中,您可以使用 pip 安装项目所需的软件包,而不会影响系统全局的 Python 环境。

9. 常见问题解答

  • Q: 我应该选择哪种安装方法?

    A: 推荐的安装顺序是:
    1. dnfyum 直接安装 (CentOS 8 及以上):最简单,但版本可能不是最新。
    2. SCL 仓库:官方支持,稳定可靠,但版本可能不是最新。
    3. IUS 仓库:提供较新版本,但可能与系统默认软件包冲突。
    4. 源码编译安装:最灵活,但需要手动处理依赖关系和编译过程。
    5. EPEL 仓库:备选方案,版本可能不是最新,且可能与系统默认软件包冲突。

  • Q: 安装完成后,如何运行 Python 3?

    A: 取决于您选择的安装方法:
    * SCL 仓库:使用 scl enable 命令启动相应的环境。
    * IUS 仓库:使用 python3.x 命令(例如 python3.9)。
    * 源码编译安装:使用 python3 命令(如果您创建了软链接)或完整路径(例如 /usr/local/python3.9/bin/python3.9)。
    * EPEL 或 dnf/yum:使用 python3x 命令(例如 python36)。

  • Q: 如何安装 Python 包?

    A: 建议使用 pip 在虚拟环境中安装 Python 包。在激活虚拟环境后,使用 pip install <package_name> 命令安装所需的软件包。

  • Q: 如何更新 Python 3?

    A: 取决于您选择的安装方法:
    * SCL 或 IUS 仓库:使用 yum updatednf update 命令更新。
    * 源码编译安装:需要重新下载源码包、解压、配置、编译和安装。
    * EPEL 或 dnf/yum: 使用 yum update python3x 或者 dnf update python3x

10. 总结

本文详细介绍了在 CentOS 系统中安装 Python 3 的各种方法,包括使用 SCL 仓库、IUS 仓库、源码编译安装、EPEL 仓库以及使用 dnfyum 直接安装。每种方法都有其优缺点,选择哪种方法取决于您的具体需求和系统环境。

无论您选择哪种安装方法,都强烈建议使用 Python 虚拟环境来管理您的项目依赖。虚拟环境可以为每个项目创建一个隔离的 Python 环境,避免不同项目之间的依赖冲突。

希望本文能够帮助您在 CentOS 系统中顺利安装 Python 3,并开始您的 Python 编程之旅。如果您在安装过程中遇到任何问题,请参考本文的常见问题解答部分,或在网上搜索相关资料。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部