Linux源码编译安装Python 3.6详细步骤

沿途有光
沿途有光
发布时间:2026-10-28| 7人浏览过
原创

详细介绍在Linux操作系统中通过官方源码编译安装Python 3.6的完整步骤,涵盖依赖包准备、编译配置、make altinstall隔离安装、软链接与环境验证,避免破坏系统原有Python环境。

在 Linux 系统中通过源码编译安装 Python 3.6,是满足老旧业务系统或特定算法库兼容性需求最可靠的方案。实现这一任务的核心路径包括:安装底层的编译构建工具链与头文件依赖库、下载解压官方源码包、执行带有隔离路径参数的配置检测、使用 make altinstall 严格隔离安装,并最终配置软链接完成多项核心功能自检。

一、编译前的系统依赖准备

Python 解释器本身由 C 语言编写,其基础功能以及部分标准库(例如用于 HTTPS 通信的 ssl 模块、动态库加载的 _ctypes 模块和解压缩的 zlib 模块)高度依赖操作系统底层的动态链接库与 C 头文件。如果直接对源码执行编译而未预先准备这些依赖,配置脚本将直接忽略对应功能,最终产出的 Python 解释器在运行时会频繁抛出 ModuleNotFoundError 致命异常。

在正式开始前,需要根据当前 Linux 发行版类型,通过包管理器一次性装齐核心构建环境与开发包:

1. RHEL / CentOS 系列命令

sudo yum update -y
sudo yum install -y gcc make zlib-devel bzip2-devel openssl-devel \
    ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel \
    db4-devel libpcap-devel xz-devel libffi-devel wget tar

2. Debian / Ubuntu 系列命令

sudo apt-get update
sudo apt-get install -y build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev wget tar llvm \
    libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev \
    liblzma-dev libgdbm-dev
Linux源码编译安装Python 3.6详细步骤
图 1:Python 3.6 源码编译所需的底层支持库及模块对应关系

二、获取官方源码与编译配置

Python 3.6 系列的最终安全维护版本为 3.6.15。建议在系统的 /usr/local/src 或当前用户主目录下下载官方发布的源码归档包并进行解压。

# 进入源码下载存储目录
cd /usr/local/src

# 下载官方发布的 Python 3.6.15 源码归档
sudo wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz

# 解压归档包并进入解压出的目录
sudo tar -zxvf Python-3.6.15.tgz
cd Python-3.6.15

进入源码目录后,需要调用 ./configure 脚本生成适应该操作系统的 Makefile 文件。在该步骤中,务必显式指定安装路径与性能优化选项:

sudo ./configure --prefix=/usr/local/python36 --enable-optimizations

关键参数说明:

  • --prefix=/usr/local/python36:指定构建产物的根安装目录。如果不指定此参数,默认所有二进制、类库和头文件将散落在 /usr/local/bin、/usr/local/lib 等系统通用目录中,未来若需升级、排查冲突或完整卸载将变得极其棘手。通过独立路径可以实现完全隔离。
  • --enable-optimizations:启用基于性能分析的引导优化(PGO/LTO)。编译器会在编译期间运行一系列自动化测试用例,根据性能热点优化二进制分支预测。这会显著延长编译时长(通常增加5到15分钟),但可使最终生成的 Python 解释器运行效率提升约 10% 到 20%。
Linux源码编译安装Python 3.6详细步骤
图 2:Linux 环境下 Python 3.6 源码编译安装六步执行流

三、编译与安全安装:切勿使用 make install

完成配置后,即可调用 make 启动构建。为了缩短编译等待时间,可以通过 -j 参数开启多线程并行编译。通常建议线程数设置为当前机器的 CPU 逻辑核心数:

# 查看当前 CPU 核心数并启动多线程编译
make -j $(nproc)
⚠️ 极其关键的安全准则:执行 make altinstall 而非 make install

编译完成后,将文件写入目标系统时,绝对不要执行 make install,必须严格使用 make altinstall 命令:

sudo make altinstall

这一区分至关重要。Linux 操作系统(例如 CentOS 7)深度依赖系统自带的 /usr/bin/python 执行 yum 等运维工具;而 Ubuntu 系统的大量守护进程依赖自带的 python3。如果运行 make install,构建系统会默认创建无版本后缀的 python 与 python3 符号链接,甚至覆盖系统的全局解释器。这将直接导致系统的包管理器和关键系统工具因语法不兼容彻底瘫痪。

相对地,make altinstall 会在目标目录中跳过创建通用的 python 与 python3 链接,仅创建严格带有版本后缀的 python3.6 与 pip3.6 可执行文件,从而保证整个宿主操作系统原有环境的纯净与稳定。

Linux源码编译安装Python 3.6详细步骤
图 3:make install 与 make altinstall 安装行为对系统稳定性的影响对比

四、环境配置与软链接建立

由于在配置步骤中将安装前缀指定为了 /usr/local/python36,此时系统的全局 PATH 环境变量中并不包含该目录下的二进制文件。为了在任意路径下直接调用,推荐创建软链接至全局路径 /usr/local/bin:

# 为 Python 3.6 解释器建立软链接
sudo ln -sf /usr/local/python36/bin/python3.6 /usr/local/bin/python3.6

# 为 Python 3.6 对应的 pip 建立软链接
sudo ln -sf /usr/local/python36/bin/pip3.6 /usr/local/bin/pip3.6

如果希望将 /usr/local/python36/bin 完整包含进环境路径,亦可通过在 /etc/profile.d/ 增加环境变量配置文件实现:

echo 'export PATH=/usr/local/python36/bin:$PATH' | sudo tee /etc/profile.d/python36.sh
source /etc/profile.d/python36.sh

五、安装后验证与核心模块检查

安装完成后,切忌仅通过 python3.6 -V 打印出版本号就草率判定成功。源码编译中最隐蔽的问题在于依赖缺失导致某些内置模块未能生成。必须逐一运行以下四项自检:

# 1. 验证解释器版本
python3.6 -V
# 预期示例: Python 3.6.15

# 2. 验证 SSL/TLS 网络加密模块(核心重点:决定 pip 是否可用)
python3.6 -c "import ssl; print(ssl.OPENSSL_VERSION)"
# 预期示例: OpenSSL 1.0.2k-fips  26 Jan 2017 (或对应系统 OpenSSL 版本)

# 3. 验证 _ctypes 模块(核心重点:决定外部 C 库调用与多数第三方包)
python3.6 -c "import _ctypes; print('ctypes OK')"
# 预期示例: ctypes OK

# 4. 验证 pip3.6 路径与可用性
pip3.6 --version
# 预期示例: pip 21.3.1 from /usr/local/python36/lib/python3.6/site-packages/pip (python 3.6)
Linux源码编译安装Python 3.6详细步骤
图 4:编译完成后四项核心功能自检清单与预期输出

六、常见编译报错与修复方案

1. 缺少 _ctypes 模块

表现特征:执行 import ctypes 时报错 ModuleNotFoundError: No module named '_ctypes'。

原因排查:系统未预装 libffi-devel(或 Debian 系列的 libffi-dev)。

解决办法:补充安装该库后,无需删除已解压源码,直接在原源码目录下重新执行 ./configure --prefix=/usr/local/python36 --enable-optimizations 并再次运行 make altinstall 即可。

2. pip is configured with locations that require TLS/SSL

表现特征:使用 pip3.6 install 下载包时报错,提示 ssl 模块不可用。

原因排查:配置阶段未找到 openssl-devel / libssl-dev 开发包,导致内置的 _ssl.c 未参与编译。

解决办法:安装 openssl-devel。若是在高版本系统(如 Ubuntu 22.04+)中安装 Python 3.6,系统默认提供的 OpenSSL 3.0 与 Python 3.6 不兼容,此时需自行源码编译一份 OpenSSL 1.1.1 安装在 /usr/local/openssl11,并在配置 Python 时通过 --with-openssl=/usr/local/openssl11 显式指定路径。

3. pip 安装源加速配置

Python 3.6 对应的 pip 默认连接官方源,在国内网络环境下容易出现连接超时。建议在初次使用前将全局镜像源切换为国内高可用镜像:

# 升级 pip 到支持 Python 3.6 的最高版本并配置国内清华镜像源
pip3.6 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3.6 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。