编辑模式 · 点击文字即可修改 · Ctrl+S 导出 再次按 E 或点击左上角退出
模块 5.2 · 后端第二课

Python 的安装和环境设置

把后端要用的环境,这一节一次备齐

零到全栈 · 李勃老师 · 2026
今天这一节

把 Python 环境这件事,一次讲透

1安装 Python,认识"一台电脑多个 Python"怎么管
2虚拟环境 venv——后面全程都靠它做环境隔离
3pip 装第三方库、用 requirements.txt 管依赖
4跑两个小脚本,认一认 Python 代码长什么样
第一步,很朴素

先有运行环境,
再谈写代码

前端写 JS,先装 Node(Vite / Next 都靠它跑);后端写 Python,那运行环境就是 Python。同一个道理。

装 Python 之前,先检查

你电脑上,到底有没有 Python?

🍎 macOS / Linux · 终端
$ python3 --version
🪟 Windows · PowerShell / 命令提示符
> python --version
返回的是什么,就代表什么
  打出 Python 3.x 版本号 —— 已经装了
  打出 command not found(Windows:不是内部或外部命令)—— 没装
!  打出 Python 2.x —— 太老、不用它
一个常见疑惑

为什么敲的是 python3,不是 python

一段历史
Python 从 Python 2 升到 Python 3 时,是一次不兼容的大版本升级——2 的代码在 3 上基本跑不动。
于是有了约定
为了不搞混:python 留给 Python 2,python3 指 Python 3。所以教程里普遍写 python3

如今 Python 2 退休了,很多系统(Windows 安装器、新版 Linux、一些管理工具)又把 python 指回了 3。所以——你就 pythonpython3 都试一下,哪个能用用哪个

多个 Python 共存 → 一个新问题

如果我装了多个 Python,我用的是哪个?

🍎 macOS / Linux
# 当前用的是哪一个 $ which python3 # 列出所有候选(最上面那条生效) $ which -a python3
🪟 Windows
# 命令提示符(CMD):一次列出所有 > where python # PowerShell: > Get-Command python
想用某个特定版本?

直接在命令里带上版本号

# 默认的 python3 指向 3.14 % python3 --version Python 3.14.6 # 想用 3.12?直接敲带版本号的命令 % python3.12 --version Python 3.12.9

一句话:多个版本能共存,要运行项目时,想用哪个版本就用哪个版本的命令

先建立一张图 · 之一

💻 一台电脑上的 Python 与项目

系统里装着的 Python 版本
Python 3.14
python3.14 · 全局
Python 3.12
python3.12 · 全局
Python 3.9
python3.9 · 全局
运行时 · 任选
📁project_A
一堆代码文件 · 不绑定 Python 版本
📁project_B
一堆代码文件 · 不绑定 Python 版本
Python 和项目,是各自独立的两回事:项目本身不挑版本——同一个项目,理论上哪个 Python 都能跑,真正用哪个,是你运行时(敲哪条命令)说了算。
图 · 之二

第三方库默认装在哪?装进 Python 自己的目录

系统里装着的 Python(各自带 site-packages)
Python 3.14
└ site-packages/  第三方库
Python 3.12
└ site-packages/  第三方库
Python 3.9
└ site-packages/  第三方库
📦 pip install 库默认落到
左边 Python 里
📁project_A
代码文件 · 本身没有独立的库
📁project_B
代码文件 · 本身没有独立的库
第三方库默认装进你用的那个 Python 的 site-packages——跟着 Python 走,不跟项目走。麻烦,就从这儿来。
图 · 之三 · 问题来了

全挤在一份公共 Python 里,会打架

系统里只装了一个 Python
Python 3.14
└ site-packages/(一个包只能存一个版本)
pandas 2.2.1
三个项目
都往这
一份装
📁project_A
要 pandas 2.2.1 ✓ 正好
📁project_B
要 pandas 2.3.0 ✗ 版本冲突
📁project_C
要 pandas 2.2.1
一份公共库,容不下同一个包的两个版本——project_B 一装,就把 A、C 的 2.2.1 顶掉了。
图 · 之四 · 解法

venv:每个项目一间自己的屋子

系统里装着的 Python(venv 可任选)
Python 3.14
└ site-packages/
Python 3.12
└ site-packages/
Python 3.9
└ site-packages/
依赖 ✗ 不装进 全局 site-packages
各建各的
.venv
📁project_A
.venv/lib/python3.14/site-packages pandas 2.2.1
📁project_B
.venv/lib/python3.12/site-packages pandas 2.3.0
📁project_C
.venv/lib/python3.14/site-packages pandas 2.2.1
各装各的 .venv——连 Python 版本都能各挑各的,互不打架。这正是前端 node_modules“依赖跟着项目走”的老规矩。
venv 怎么用

就三个关键命令

# ① 建:在项目根目录下,创建 .venv(用哪个 python 建,环境就是哪个版本) $ python3 -m venv .venv # ② 进:激活它——必须激活才生效 $ source .venv/bin/activate # ③ 出:退出当前环境 $ deactivate

激活后,提示符最前面会多出一个 (.venv)——这就是"我在环境里"的标志。装了 conda 的同学先别跟着敲,等下单独讲。

常见疑问 · 一

两个项目都显示 (.venv)——我在哪个环境里?

❓ 问题:长得一模一样
# 在 project_A 里创建并激活 $ python3 -m venv .venv (.venv) $ # 在 project_B 里创建并激活 $ python3 -m venv .venv (.venv) $
✓ 解法:创建时加 --prompt
# 在 project_A 里创建并激活 $ python3 -m venv --prompt=project_A .venv (project_A) $ # 在 project_B 里创建并激活 $ python3 -m venv --prompt=project_B .venv (project_B) $

目录名照旧是 .venv,变的只是提示符。

常见疑问 · 二 · 图 · 之五

已经在用 conda 了?先看清它和 venv 的不同

系统(系统 Python 与 conda 共存)
系统 Python 3.12
└ site-packages/
📦 conda(全局一份,内含多个环境)
base(默认)
python3.12 · 自带一套包
myenv312
python3.12 + 自己的第三方包
myenv314
python3.14 + 自己的第三方包
按约定
各用各的
环境
📁project_A
用 conda 环境 myenv312
📁project_B
用 conda 环境 myenv314
系统 Python 与 conda 可以共存;conda 把环境集中管起来,每个环境各有自己的 Python 版本和第三方包——但环境不在项目里,哪个项目配哪个环境,得靠约定、靠你自己记(这点不如 .venv 直观)。
常见疑问 · 三

想跟课程用 venv?先关掉 conda 的自动启动

先看 conda 版本
$ conda --version
按版本二选一(配置项改过名)
# 早于 24.9 conda config --set auto_activate_base false # 24.9 及以后 conda config --set auto_activate false

关掉终端再打开,(base) 就不见了。这只是不让它默认启动,并没卸掉——以后想用,conda activate 还能回来。

回到我们的项目

给 zero-to-tech 建 backend,配上自己的 .venv

# 给后端代码安个家 $ cd ~/zero-to-tech $ mkdir backend && cd backend # 建虚拟环境,顺手用 --prompt 起个一眼能认的名字 $ python3 -m venv --prompt=zero-to-tech .venv $ source .venv/bin/activate (zero-to-tech) $  # ← 环境就绪

提示符出现 (zero-to-tech)——你现在用的,就是这个项目自己的那套 Python。

安装第三方库的工具

pip:Python 的包管理器

是什么
装 Python 时自带的包管理器——第三方库都发布在 PyPI 上,用 pip 一条命令就能装下来。
它之于 Python,就是 npm 之于 Node(模块 4 用 npm install 装过 anime.js)。
怎么用 · 常用命令
$ pip install 包名 # 安装 $ pip install 包名==版本 # 指定版本 $ pip list # 装了哪些 $ pip show 包名 # 某个包的信息 $ pip uninstall 包名 # 卸载

装包之前,先激活项目的 .venv——包就装进这个项目,不弄脏全局。

给依赖记一本账

.venv 不进 Git,那别人怎么知道要装什么?

生成清单 → 复现环境
# 生成 $ pip freeze > requirements.txt # 别人 / 服务器上,一条命令装齐 $ pip install -r requirements.txt
requirements.txt
certifi==2026.6.17 charset-normalizer==3.4.8 idna==3.18 requests==2.34.2 urllib3==2.7.0
每包一行、版本钉死。它和 .venv 相反——要进 Git,跟着代码走。
后端之旅 · 下一步

下一节,
手搓我们的第一个 API

脱离框架、纯手工,把"用 HTTP 访问一个 API 时,到底发生了什么样的网络对话",看个明明白白。咱们下一节见。