macOS下通过官方安装包或Homebrew安装Python 3.6.8
在macOS系统下安装Python 3.6.8的完整实用指南。深入讲解官方PKG安装包与Homebrew结合pyenv编译安装的两种可行路径,解决证书缺失、版本弃用与多版本共存问题。
在 macOS 上安装 Python 3.6.8 主要适用于维护老旧项目、运行依赖特定旧版 C 扩展的科学计算库或配合特定教学实验环境。由于 Python 3.6 早已到达官方生命周期终点(EOL),现代 macOS 系统及其主流包管理器并不会直接默认提供该版本。本文将系统讲解如何分别通过 Python 官方历史安装包与借助 Homebrew 工具链编译安装 Python 3.6.8,同时补齐 SSL 证书配置、架构兼容与多版本共存的关键操作细节。
一、技术路径与现实环境辨析
在开始操作前,需要明确 macOS 的软硬件环境与 Python 3.6.8 的技术边界。Python 3.6.8 于 2018 年底发布,官方提供的安装程序原生支持 Intel(x86_64)架构。如果使用的是搭载 Apple Silicon(M1/M2/M3/M4 系列芯片)的 Mac,运行 3.6.8 需要依靠系统的 Rosetta 2 转译机制或进行特定的编译配置。
许多初学者会习惯性地在终端执行 brew install python@3.6,随后会收到类似 Error: No available formula with the name "python@3.6" 的错误。这是因为 Homebrew 官方仓库(homebrew-core)的政策是只维护处于官方活跃支持周期内的 Python 版本,已废弃的版本会被移出核心公式库。因此,“通过 Homebrew 安装 Python 3.6.8”的正确落地方式是借助 Homebrew 安装编译老版本所需的底层依赖(如 OpenSSL 1.1),再由版本管理工具(如 pyenv)完成源码编译与注入。
二、通过官方安装包(PKG)安装
官方安装包是经过 Python 核心团队预编译打包的标准 macOS 安装器,安装过程直接,适合单机环境快速就绪。
1. 下载对应安装包
访问 Python 官方发布归档页面(https://www.python.org/downloads/release/python-368/)。在页面底部的“Files”列表中,选择适用于 macOS 的安装文件:
- 安装包名称:
macOS 64-bit/32-bit installer(文件名为python-3.6.8-macosx10.9.pkg)。 - 如果使用的是 Apple Silicon 芯片的设备,请在终端确认已安装 Rosetta 2 运行环境:
softwareupdate --install-rosetta --agree-to-license
2. 运行安装程序与文件释放
双击下载的 .pkg 文件,根据向导点击“继续”完成许可确认与安装。安装程序会将 Python 3.6.8 的运行库与工具集释放在:
/Library/Frameworks/Python.framework/Versions/3.6/
同时,向导会在 /usr/local/bin 目录下建立软链接(如 python3.6、pip3.6 等),方便终端直接调用。
3. 核心步骤:运行证书安装脚本
这是官方包在 macOS 平台上最容易被忽略的关键步骤。自 Python 3.6 起,macOS 版官方安装包不再依赖系统的根证书信任链,而是自包含独立证书库。如果跳过此步,后续使用 urllib 请求 HTTPS 链接或运行 pip install 时,通常会触发 SSL: CERTIFICATE_VERIFY_FAILED 错误。
在终端中执行官方随包附带的证书安装脚本:
"/Applications/Python 3.6/Install Certificates.command"
该脚本会自动运行 certifi 证书更新程序并建立正确的根证书软链接。执行完毕后,终端输出类似以下结果即代表配置生效:
-- 示例输出 --
Installing certifi to run-time environment...
Removing old certs directory...
Extracting certificates to /Library/Frameworks/Python.framework/Versions/3.6/etc/openssl/certs...
SSL certificates installed successfully.
4. 检验安装结果
在终端输入以下命令查看版本与所在路径:
python3.6 --version
which python3.6
正常情况下,终端将反馈:
-- 示例输出 --
Python 3.6.8
/usr/local/bin/python3.6
三、借助 Homebrew 与 pyenv 编译安装
对于现代开发者而言,单纯依赖官方安装包难以在同一台设备上灵活维护多个不同版本的 Python。借助 Homebrew 管理系统编译工具链,配合 pyenv 编译和管理 Python 3.6.8,是工程实践中更为推荐的做法。
1. 安装 Homebrew 与必备依赖
Python 3.6.8 在编译时依赖现代 macOS 不再默认内置的开发库,尤其是 openssl@1.1、readline 和 zlib。通过 Homebrew 安装这些支持组件:
brew update
brew install pyenv
brew install openssl@1.1 readline sqlite3 xz zlib bzip2
openssl@1.1。
2. 注入编译标志并执行安装
由于现代 macOS(如 macOS Monterey、Ventura、Sonoma 等)更新了 Clang 编译器与 SDK 头文件搜索逻辑,直接运行 pyenv install 3.6.8 往往会因找不到 OpenSSL 头文件而报错中断。因此需要显式传入 Homebrew 安装的依赖路径:
CFLAGS="-I$(brew --prefix openssl@1.1)/include -I$(brew --prefix readline)/include -I$(brew --prefix bzip2)/include" \
LDFLAGS="-L$(brew --prefix openssl@1.1)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix bzip2)/lib" \
pyenv install 3.6.8
如果使用的是 Apple Silicon(M 系列)架构,由于 Python 3.6 早期的构建脚本不包含对 arm64-apple-darwin 架构的完整 target 识别,直接编译可能会出现 clang: error: unsupported option 或配置脚本中断。此时可以通过 arch -x86_64 在 Rosetta 环境下发起编译:
arch -x86_64 env \
CFLAGS="-I$(brew --prefix openssl@1.1)/include -I$(brew --prefix readline)/include" \
LDFLAGS="-L$(brew --prefix openssl@1.1)/lib -L$(brew --prefix readline)/lib" \
pyenv install 3.6.8
3. 配置 pyenv 环境变量与生效验证
为了让系统终端能够自动识别由 pyenv 管理的 Python 版本,需要将 pyenv 的 shims 目录加入当前 Shell 的配置文件中(以 zsh 为例):
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
随后切换并验证当前版本:
# 设定当前终端或全局使用 3.6.8
pyenv global 3.6.8
# 查看当前活跃版本与二进制指向
python --version
which python
预期输出结果如下:
-- 示例输出 --
Python 3.6.8
/Users/username/.pyenv/shims/python
四、多版本共存与虚拟环境隔离
无论采用上述哪种方式安装,Python 3.6.8 都应当作为“基础运行时”,而不是直接使用其全局环境肆意安装第三方库。由于 Python 3.6 所支持的 wheel 规范以及 pip 版本的时效性限制,混用全局包极易导致依赖解析错乱。
最健壮的实践方式是针对每个具体工程创建专门的虚拟环境(venv):
# 1. 进入您的工程目录
cd ~/projects/legacy-demo
# 2. 调用 3.6.8 的 venv 模块创建独立环境(命名为 venv36)
python3.6 -m venv venv36
# 3. 激活虚拟环境
source venv36/bin/activate
# 4. 确认当前虚拟环境的解释器与 pip 路径
which python
which pip
五、常见问题与排查指南
1. pip 安装第三方库时出现 pip 版本兼容或 HTTPS 报错
在 Python 3.6 环境中执行 pip install --upgrade pip 时,如果未指定版本号,可能会遇到无法解析或报错。这是因为 pip 官方从 21.3 开始逐渐停止支持 Python 3.6,支持 Python 3.6 的最后一个稳定 pip 版本是 21.3.1。
推荐的升级或重置命令为:
python -m pip install "pip<=21.3.1" setuptools wheel
2. 官方安装包环境下 urllib 抛出 CERTIFICATE_VERIFY_FAILED
当执行包含网络请求的 Python 脚本时,如果抛出如下异常:
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed>
这说明安装后未执行前文提到的证书配置脚本。请关闭终端,运行以下命令即可修复:
"/Applications/Python 3.6/Install Certificates.command"
3. pyenv 编译提示 fatal error: 'openssl/ssl.h' file not found
这通常是因为构建脚本未能通过环境变量获取 OpenSSL 的 C 语言头文件位置。Homebrew 在安装 openssl@1.1 时为了不破坏系统默认 SSL,采用“keg-only”模式(即不主动软链至 /usr/local 或 /opt/homebrew 核心搜索路径)。此时请严格检查在执行 pyenv install 命令前是否准确导出了 CFLAGS 和 LDFLAGS 参数。
六、两种安装方案选型对照
| 对比维度 | 官方 PKG 安装包 | Homebrew + pyenv 源码编译 |
|---|---|---|
| 安装难度 | 极低,双击向导安装即可 | 中等,需熟悉终端命令与编译参数 |
| 芯片支持 | 原生仅 Intel,Apple Silicon 需依赖 Rosetta 2 | 支持配置 Rosetta 2 编译,灵活性高 |
| 证书配置 | 必须手动运行一次 Install Certificates.command | 随 OpenSSL 编译绑定,无需额外运行脚本 |
| 多版本管理 | 需手动通过软链接或完整路径(python3.6)调用 | 支持 global、local、shell 粒度无缝切换 |
| 卸载清理 | 需手动清理 /Library/Frameworks 及 /usr/local/bin 链接 | 仅需执行 pyenv uninstall 3.6.8 即可彻底删除 |
总结而言,如果只是临时在 Intel Mac 或已配置 Rosetta 2 的机器上简单运行单次脚本,官方 PKG 搭配证书脚本是最省时的方案;如果需要在长期的工程开发中兼顾代码调试、依赖隔离与多版本平滑切换,使用 Homebrew 配合 pyenv 进行管理则是更为规范和可控的选择。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









