
macOS 系统自带 Python 3.9(位于 /usr/bin/python),而你从 python.org 安装的 Python 3.12 则独立部署在 /Library/Frameworks/ 下,二者路径、命名和用途不同;通过 python 与 python3 命令调用不同版本是正常现象,推荐使用 venv 创建隔离环境而非修改系统级符号链接。
macos 系统自带 python 3.9(位于 `/usr/bin/python`),而你从 python.org 安装的 python 3.12 则独立部署在 `/library/frameworks/` 下,二者路径、命名和用途不同;通过 `python` 与 `python3` 命令调用不同版本是正常现象,推荐使用 `venv` 创建隔离环境而非修改系统级符号链接。
在 macOS 上观察到 python --version 返回 3.9.6,而 python3 --version 返回 3.12.2,并非配置错误,而是系统设计使然。根本原因在于:macOS 自带的 Python 与用户手动安装的 Python 属于完全独立的安装体系。
- 系统自带 Python(3.9.6):位于 /usr/bin/python,是 Apple 预置的只读系统组件(自 macOS 12.3 起已移除 Python 2,但保留 Python 3.9 作为基础工具链依赖)。该可执行文件名为 python,被 shell 按照 PATH 顺序优先匹配。
- 官网安装的 Python(3.12.2):通过 .pkg 安装器部署至 /Library/Frameworks/Python.framework/Versions/3.12/,其主解释器默认命名为 python3(而非 python),以避免与系统版本冲突。执行 which python3 显示的路径即为此处。
你可以验证该安装下的完整可执行文件结构:
ls -l /Library/Frameworks/Python.framework/Versions/3.12/bin/python*
通常会看到类似输出:
lrwxr-xr-x 1 root admin 8 Apr 10 10:23 /Library/.../bin/python -> python3 -rwxr-xr-x 1 root admin ... /Library/.../bin/python3 -rwxr-xr-x 1 root admin ... /Library/.../bin/python3.12
注意:此处的 python 是指向 python3 的软链接——但它仅作用于该目录内,对全局 PATH 中的 python 命令无影响。
立即学习“Python免费学习笔记(深入)”;
一、外卖通叫餐(预订)系统单店版是什么样的一个系统? 外卖通系列软件是针对非商品性买卖、有别于传统的商城系统的、外卖和预订为概念性的店铺管理系统,我们的口号就是:让所有的门店在网上安个家,以往的版本都是基于多用户性质的平台系统,而外卖通单店版是基于某个店铺的专业外卖预订管理系统,设计了外卖、预订、专题活动、小游戏、资讯、形象、点评、积分、相册等多种功能模块以适应商家办站的各种需求。这套系统可
⚠️ 不建议强行覆盖系统 python 行为
虽然可通过以下方式创建全局 python 指向 3.12:
sudo ln -sf /Library/Frameworks/Python.framework/Versions/3.12/bin/python3 /usr/local/bin/python
但此举风险极高:许多系统脚本、Xcode 工具链或 Homebrew 包管理器依赖 /usr/bin/python 或 python3 的稳定行为,擅自更改可能引发不可预知的兼容性问题。
✅ 推荐方案:使用标准 venv 创建项目级环境
这是 Python 官方推荐、安全且可复现的最佳实践。它不干扰任何系统安装,只为当前项目绑定指定 Python 版本:
# 进入项目目录 cd ~/my-project # 用 Python 3.12 创建虚拟环境(显式指定解释器更可靠) python3.12 -m venv .venv # 激活环境(激活后,python/pip 均指向 3.12) source .venv/bin/activate # 验证 python --version # 输出:Python 3.12.2 which python # 输出:~/my-project/.venv/bin/python
激活后的终端会自动将 .venv/bin/ 置于 PATH 最前端,所有 python、pip 调用均精准路由至 Python 3.12。退出时执行 deactivate 即可恢复系统默认环境。
? 额外提示
- 若需日常开发中默认使用新版 Python,可考虑使用版本管理工具(如 pyenv),它通过 shell 函数动态调整 PATH,比硬链接更安全灵活;
- which python 显示 aliased to /usr/bin/python3 表明你当前 shell 存在别名(可通过 alias python 查看),这属于用户层配置,不影响底层逻辑;
- 所有操作均无需 sudo(除极少数全局链接外),应优先保障系统完整性。
归根结底:多版本共存不是缺陷,而是现代 Python 开发的常态。理解路径、命名与作用域的关系,并善用 venv,才能真正掌控环境一致性。









