Python安装

MacOS 系统通常会自带一个较老版本的 Python,通常可以通过打开终端,通过python --version或者python3 --version查看自带的python版本。

  • 如果显示的是 Python 2.x.x,说明系统中预装了 Python 2,但由于 Python 2 已经停止维护,建议你安装并使用 Python 3。
  • 如果显示的是 Python 3.x.x,说明系统中已经安装了 Python 3,但可能不是最新版本。如果你需要使用最新版本,可以继续按照以下步骤进行更新。

使用Homebrew安装Python3

Homebrew 是一款针对 macOS(以及 Linux 系统)的 包管理工具,它能帮助用户快速、便捷地安装、卸载、更新各种开源软件和命令行工具,类似于 Linux 系统中的 apt(Debian/Ubuntu)或 yum(CentOS)。
安装Homebrew的官方自动安装命令是:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
但是国内因为网络的问题很容易失败,因此推荐使用国内的一些镜像源进行安装:
这里给出一个通过国内gitee安装的命令,该命令还会附带帮你配置后续Homebrew安装软件时的国内镜像源

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

安装成功后,可以通过brew -v查看版本信息。
之后我们可以通过brew install python来安装最新的python3,安装成功后可以通过python3 --version查看版本信息。

Python后续的软件包安装:

通过Homebrew管理的包有一个问题就是因为homebrew也是一个包管理工具,用他安装的python也归他管理,因此当后续需要使用python的pip命令安装全局依赖包时会和homebrew冲突,会被禁止使用pip。
解决办法有两种:

  • 一种就是在一个特别的项目中创建一个虚拟环境,这就像为你的项目创建一个干净、独立的 Python “房间”,你在里面安装的任何包都只属于这个项目,不会影响到系统或其他项目。
  • 另一种就是使用Homebrew来安装包,但是homebrew一般只管理一些大型包,对于一些纯python库可能安装不了。因此如果实在需要使用homebrew安装的话,需要先查找包是否存在brew search xyz,如果找到了该包,就可以使用brew install xyz来安装了。

Rust安装

打开终端并输入下面命令:

$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

这个命令将下载一个脚本并开始安装 rustup 工具,此工具将安装 Rust 的最新稳定版本。可能会提示你输入管理员密码。
但是由于 Rust 官方服务器位于国外,直接按照 Rust 官网指南安装时可能会遇到下载速度慢或失败的问题。通过使用国内镜像,可以显著提升安装和更新的效率。
安装示例(以清华源为例)

  1. 将以下环境变量添加到 ~/.bashrc 或其他 Shell 配置文件中,使其成为全局变量:
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
  1. 运行安装命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

如果安装成功,将出现下面这行:

Rust is installed now. Great!

OK,这样就已经完成 Rust 安装啦。

[安装 C 语言编译器:(非必需)]

Rust 对运行环境的依赖和 Go 语言很像,几乎所有环境都可以无需安装任何依赖直接运行。但是,Rust 会依赖 libc 和链接器 linker。所以如果遇到了提示链接器无法执行的错误,你需要再手动安装一个 C 语言编译器:

macOS 下:

$ xcode-select --install

为什么不像Python一样用Homewbrew包安装Rust?

答案很简单:因为 Rust 的官方安装工具 rustup 本身就是一个强大的版本管理器,而 Python 的官方安装包则不具备这个能力。 我们选择工具是为了解决问题,而两门语言官方工具的能力不同,导致了我们选择的路径也不同。

下面我们来详细对比一下。


Rust 和 Python 官方工具的核心差异

特性 Rust (官方 rustup) Python (官方 python.org 安装包)
自带版本管理? ,而且非常强大。rustup 的核心功能就是管理和切换版本。 。它只是一个简单的安装程序,负责把单一版本的 Python 安装到你的系统中。
多版本共存? 非常简单rustup install stable, rustup install nightly 可以一键安装多个版本,并通过 rustup default 轻松切换。 非常困难。如果你用官方安装包安装了 3.11,又安装了 3.12,它们会互相干扰,你需要手动管理 PATH 环境变量,极易出错。
卸载与清理? 非常干净。一个命令 rustup self uninstall 就能把所有 Rust 相关的东西从你的电脑上彻底移除。 非常麻烦。你需要手动去多个系统目录下删除文件和文件夹,很容易有残留。
与系统关系? 清晰分离rustup 把所有东西都安装在你的用户主目录 (~/.rustup, ~/.cargo),不干扰系统。 与系统混合。它会将文件安装到 /Library/Frameworks, /usr/local/bin 等系统级目录中。

结论就是:rustup 是一个“授人以渔”的工具,它给了你管理所有鱼(Rust 版本)的能力。而 Python 的官方安装包是“授人以鱼”,一次只给你一条鱼(一个 Python 版本)。


为什么在 Python 上 Homebrew 是更好的选择?

正是因为 Python 的官方安装包存在上述的那些“短板”,我们才需要一个更好的工具来解决这些问题,而 Homebrew 就扮演了这个角色。

  1. 解决了 macOS 自带 Python 的问题
    macOS 系统本身会预装一个非常老的 Python(位于 /usr/bin/python3),这个版本是给操作系统自己用的,我们绝对不能去修改或卸载它,否则可能导致系统不稳定。我们需要一个完全独立、干净的 Python 环境。

  2. 解决了多版本共存的问题
    Python 官方安装包做不到的事情,Homebrew 可以。你可以非常方便地安装多个独立的 Python 版本:

    # 安装 Python 3.11
    brew install python@3.11

    # 安装 Python 3.12
    brew install python@3.12

    Homebrew 会把它们妥善地安装在各自的目录中,并为你处理好基础的路径问题,避免了手动安装的混乱。

  3. 提供了更方便的管理
    brew 安装的 Python,可以通过 brew list, brew info python@3.12, brew uninstall python@3.12 等命令来方便地查看和管理,这比手动删除文件要安全和简单得多。

总结与最终答案

  1. 对于 Rust:它的官方工具 rustup 已经是一个完美的版本管理器了,我们不需要任何其他工具,直接用官方的就好。

  2. 对于 Python:它的官方安装包能力不足,无法胜任现代开发中多版本管理的需求。因此我们需要更强大的第三方工具。

    • 好方案:直接使用 Homebrew (brew install python@3.12) 来安装和管理 Python 版本。
    • 最佳方案:使用 Homebrew 安装 pyenv (brew install pyenv),然后用 pyenv 来全权管理 Python 版本。这让你在 Python 上获得了和 Rust rustup 一样强大和灵活的体验。

所以,我们推荐在 Mac 上用 Homebrew 来处理 Python,本质上是因为 Homebrew(或通过它安装的 pyenv)为 Python 补齐了官方工具缺失的版本管理能力