返回首页
## 引言
上一篇我们回答了「为什么学 Python」:解释执行、动态类型、50 万+ 包的生态,以及它的性能软肋。从这一篇开始,我们进入实操——**把你的电脑变成能跑 Python 的环境**。这是本章 10 篇里最「琐碎」的一篇,但也是后续所有代码能跑起来的前提。
本文面向零基础读者,假设你已经读完第 1 篇、理解了解释器(interpreter)与包(package)这两个词的含义。目标很具体:在 Windows、macOS、Linux 任一平台上安装 Python 3.10 以上版本,理解 PATH(环境变量中的可执行文件搜索路径)、版本共存、`python` 与 `python3` 的区别,并完成「验证三连」。读完本文,你应当能在自己的终端敲出 `python --version` 并看到合理的输出版本号;至于之后的虚拟环境与包管理,分别是第 4、5 篇的任务。
## 概念与原理
### 一次「安装」到底装了什么
很多人以为安装 Python 就是得到一个 `python.exe`,其实一次标准安装包含四部分:
1. **CPython 解释器本体**:即 `python` 可执行文件,负责把源码翻译成字节码(bytecode)并执行——这是第 3 篇的主角,这里先知道它存在;
2. **标准库**(standard library):随解释器一起分发的数百个内置模块,如 `sys`、`os`、`json`、`math`,这是 Python「开箱即用」的底气;
3. **pip**:官方包管理工具,用来从 PyPI 安装第三方包,详见第 5 篇;
4. **文档与示例**:可选组件,一般用不到。
在 Windows 上还可以选择安装 **py 启动器**(Python Launcher),它让不同版本的 Python 可以在命令行中共存、按需切换——这是 Windows 官方安装器特意提供的特性,稍后详述。
### PATH:为什么敲 `python` 能找到程序
在终端里敲 `python`,操作系统做的事情是:在一组预先配置好的目录里逐个查找名为 `python` 的可执行文件。这组目录记录在环境变量 **PATH** 中(Windows 与 macOS/Linux 皆是如此,只是分隔符不同,Windows 用分号 `;`,macOS/Linux 用冒号 `:`)。
理解 PATH 能解释几乎所有「命令找不到」的报错(Windows 上提示 `'python' 不是内部或外部命令`,macOS/Linux 上提示 `command not found`):要么 Python 没装,要么装了但它的目录没进 PATH。所以安装器的关键勾选项「把 Python 添加到 PATH」(Add Python to PATH)本质是:把解释器所在目录写进系统环境变量。这也是为什么装完后往往需要**重新打开**终端——终端在启动时读取一次 PATH,新开窗口才会生效。
### 版本号与多版本共存
Python 版本号分三段:`3.12.10` 中的 `3` 是主版本(major,历史上只有 2 和 3)、`12` 是次版本(minor,新特性在次版本引入)、`10` 是补丁版本(patch,只修 bug 与安全问题)。语义上要知道两点:**次版本之间可能不兼容**(比如 3.11 引入的某些优化、3.12 移除的旧特性),而**同一次版本内可以放心升级补丁版**。多数第三方库声明兼容的最低版本(如「要求 Python 3.9+」),通常意味着次版本号要够大。
多版本共存是真实需求:老项目可能锁定 3.9,新项目用 3.12。三套方案对应三种平台:
- **Windows**:官方安装器安装多个版本后,用 `py` 启动器管理:`py -0` 列出已安装的全部 Python 版本,`py -3.11` 指定用 3.11 运行脚本,`py -3.11 -m pip` 调用 3.11 的 pip;不带版本号时 `py` 按安装顺序自动选一个「默认版本」。该启动器是 Windows 独有的,日常开发甚至可以全程用 `py` 代替 `python`——它有统一的入口,天然解决多版本选择问题;
- **macOS**:官方安装器会安装到 `/Library/Frameworks/Python.framework` 并注册独立的 `python3.12` 命令,各版本互不干扰;
- **Linux**:发行版包管理器装的多个版本靠命令名区分(`python3.11`、`python3.12`),或用 `update-alternatives` 管理默认项。
顺带回答一个高频疑问:**装了新版要不要卸载旧版?** 不需要。多个大版本并存没有冲突(Windows 有 `py` 启动器,macOS/Linux 靠命令名区分),第 10 篇之前你只保留一个主用版本即可,版本切换留在以后需要时再说。
### 三种平台的差异
一句话概括:**Windows 上一切皆顺(安装器),macOS 上慎重用系统 Python,Linux 上 Python 往往与系统紧密绑定**。
macOS 自带一个由系统组件(command line tools)提供的 `python3`——注意它可能没有 pip、版本偏旧,而且与系统软件绑定,**不要用系统自带版本做开发**,也不要卸载它。Linux 同理:Debian/Ubuntu 的软件包管理工具(apt)本身依赖 `python3`,直接替换系统 Python 可能弄坏系统工具,正确的做法是从软件源安装开发用的 Python 包(见下文)。Windows 则是唯一「不自带 Python」的主流桌面系统——这解释了为什么网上「新手第一次装 Python」的教程绝大多数以 Windows 为例:因为它真的要手动装,而 macOS/Linux 已经有一个「看着像、但不宜用」的预装版本。
## 操作/实现
请按你的平台执行对应小节,其余小节可以略读。
### Windows
**方案 A(推荐):官方安装器。** 打开 Python 官网下载页(https://www.python.org/downloads/),下载最新的 3.x 安装包(页面上的黄色按钮即是),运行安装器时请务必勾选最下方两项:
```text
[√] Install launcher for all users (recommended)
[√] Add python.exe to PATH
```
勾选 Add to PATH 后直接点击 Install Now 即可。安装完成后重新打开终端(PowerShell 或 CMD),执行验证三连(见下文)。
**方案 B:winget(Windows 包管理器)。** Windows 10/11 自带 winget,可在终端一把装好:
```bash
winget install Python.Python.3.12
```
装完同样重新打开终端再验证。注意 winget 会自动处理 PATH,但当前已打开的终端窗口不会立刻感知。两个方案选**其一**即可——官方安装器图形化、步骤直观,适合第一次;winget 无需浏览器、可脚本化,适合以后重装。两个都装并不会冲突(会装到同一个位置),但没必要,且容易让自己搞不清「到底哪次装的生效」。
### macOS
**方案 A(推荐):Homebrew。** 如果你已经装了 Homebrew(macOS 社区最流行的包管理器),一条命令搞定:
```bash
brew install python@3.12
```
Homebrew 安装的 Python 在 Apple Silicon 机器上位于 `/opt/homebrew/bin`,Intel 机器上位于 `/usr/local/bin`——Homebrew 会提醒你把它加入 PATH,按提示操作即可。
**方案 B:官方安装器。** 同样访问 https://www.python.org/downloads/ 下载 macOS 安装包,双击按向导安装。它会安装到 `/Library/Frameworks/Python.framework`,并在 `/usr/local/bin` 放置 `python3`、`python3.12` 等命令的链接,通常无需手动配 PATH。注意官方安装器对 intel/Apple Silicon 有不同的安装包,请下载对应架构版本。
### Linux(以 Debian/Ubuntu 为例)
Debian/Ubuntu 的软件源里自带 Python,用 apt 安装:
```bash
sudo apt update
sudo apt install -y python3 python3-venv python3-pip
```
注意三点:一是命令名就是 `python3`(发行版刻意不提供裸 `python`,如需可用 `sudo apt install python-is-python3` 让 `python` 指向 `python3`);二是**必须**顺带安装 `python3-venv`,因为 Debian 默认不随 Python 提供虚拟环境模块(第 4 篇要用);三是 `pip` 通过 `python3 -m pip` 调用。如果你想用更新版本(比如系统源里是 3.10 而你需要 3.12),可以添加 deadsnakes 等第三方 PPA,但这对新手不必要——**先跑起来比追求最新版重要**。
### 安装后的通用验证
无论哪个平台,装完后请重新打开终端,执行「验证三连」:
```bash
python --version
python -c "print(1 + 1)"
python -m pip --version
```
本机(Windows,Python 3.12)输出如下,供比对:
```text
Python 3.12.10
2
pip 25.0.1 from C:\Program Files\Python312\Lib\site-packages\pip (python 3.12)
```
三行分别回答:解释器装好了、解释器能执行代码、pip 可用(注意 `--version` 显示的 `python 3.12` 表示这个 pip 属于 3.12 这个解释器)。
若想进一步确认「当前实际用的是哪个解释器」,可以告诉 Python 自己打印安装信息——这个写法在三个平台通用(macOS/Linux 下命令名改 `python3` 即可):
```bash
python -c "import sys, platform; print(sys.executable); print(sys.version.split()[0]); print(platform.system())"
```
本机输出:
```text
C:\Program Files\Python312\python.exe
3.12.10
Windows
```
`sys.executable` 是解释器可执行文件的完整路径——之后凡是遇到「我的 python 到底是哪个」的困惑,第一反应就是打印它。
## 易错点与陷阱
**易错点 1:Windows 安装时漏勾「Add python.exe to PATH」。** 现象是装完后终端报 `'python' 不是内部或外部命令`。补救优先:直接重跑一次安装器,勾上对应项(安装器支持 Modify 修改)。不推荐新手手动编辑 PATH(环境变量对话框里手滑删掉其它路径会引发连锁问题)。另外注意:改完 PATH 后必须**新开**终端窗口才生效,很多人卡在这一步。
**易错点 2:用 `pip` 而不是 `python -m pip`。** macOS/Linux 上 `pip` 与 `python` 可能不完全对应同一个解释器(尤其装了多个版本或用了系统 Python 时),Windows 上多版本共存时 `pip` 指向也可能与预期不符。稳妥的通用写法是 `python -m pip ...`——它保证「用哪个解释器,就用哪个解释器的 pip」。
**易错点 3:动系统自带的 Python。** 在 macOS/Linux 上直接改、卸、降级系统 Python(比如 macOS 的 `/usr/bin/python3`,或 apt 依赖的 `/usr/bin/python3`)可能让系统工具(软件更新、包管理器)罢工。开发用的 Python 与系统 Python 各装各的,互不干扰。
**易错点 4:命令名不统一导致的幻觉报错。** Linux 上没有裸 `python`(要装 `python-is-python3` 或改用 `python3`);部分 macOS 系统的 `python3` 无 pip。遇到「命令找不到」时,先确认命令名是否符合平台惯例,再怀疑 PATH。
**易错点 5:下载了与机器不匹配的安装包。** 典型是 Apple Silicon(M 系列芯片)Mac 上装了 Intel 版安装器,表现为 `python3` 命令提示「无法执行」或系统提示架构不兼容(bad CPU type);以及 Windows 上把源码包当安装包用(Windows 没有官方源码编译流程)。对策:下载页会明确标注安装包类型(如 macOS 的「macOS 64-bit universal2 installer」、Windows 的「Windows installer (64-bit)」),对照机器架构选择,不要见按钮就点。
## 小结
本文完成了环境的落地:讲了「安装 Python」实际安装的四样东西(解释器、标准库、pip、文档),解释了 PATH 为什么让 `python` 命令可被找到、版本号三段各自语义,以及多版本共存的三种平台方案。实操部分给出 Windows(官方安装器/winget)、macOS(Homebrew/官方安装器)、Linux(apt)的安装命令和「验证三连」。四个易错点集中在:PATH 勾选、`python -m pip` 通用写法、不动系统 Python、命令名平台差异。现在你的机器已经能运行 Python——下一步(第 3 篇)我们将深入那个 `python` 命令的背后,看一行代码从源码到输出经历了什么。
## 练习与思考题
1. 完成你所在平台的安装,并执行「验证三连」,把三行输出保存下来。(答案导向:`Python 3.x.y`、`2`、`pip x.y.z from ...`,版本号 x 应大于等于 10。)
2. 执行 `python -c "import sys; print(sys.executable)"`,回答:这个路径是否在你的 PATH 里?如何验证?(答案导向:Windows 用 `where python`,macOS/Linux 用 `which python`;若输出的路径与 `which` 不一致,说明 PATH 中有多个 Python。)
3. 思考题:为什么修改 PATH 后需要重新打开终端窗口?(答案导向:终端启动时读取一次环境变量,新进程继承的是启动那一刻的环境。)
4. 查一查你安装的 Python 的次版本号尾部是否为偶数补丁(如 3.12.10),并说出次版本与补丁版本在语义上的区别。(答案导向:次版本引入新特性、可能不兼容;补丁只修 bug 与安全,可放心升级。)