前端 Python 3.12

12. 虚拟环境和包

venv 隔离、激活/退出、pip 常用命令、requirements 冻结与恢复——对齐 node_modules,并补一行现代依赖管理提示。

12.1 为什么需要虚拟环境

痛点venv 解决
项目 A/B 依赖版本冲突每项目独立 site-packages
全局 pip install 弄脏系统 Python依赖装进 .venv
CI 复现固定解释器版本 + 锁文件
# 进入仓库根目录后:
python --version        # 先确认你要的 minor 版本
python -m venv .venv

12.2 创建

python -m venv .venv

旧命令 pyvenv 已废弃;第三方 virtualenv 仍有场景,但对新手不必要。


12.3 激活

Windows(cmd / PowerShell)

.venv\Scripts\activate

macOS / Linux

source .venv/bin/activate

成功时提示符前常出现 (.venv);此时 which python / where python 应指向 .venv


12.4 退出

deactivate

12.5 pip:安装与维护

python -m pip install -U pip
python -m pip install requests
python -m pip install "requests>=2.31,<3"
python -m pip uninstall requests
python -m pip list
python -m pip show requests

始终用 python -m pip:避免 PATH 上的 pip.exe 指向另一只 Python。


12.6 锁定依赖:freeze 与恢复

python -m pip freeze > requirements.txt
python -m pip install -r requirements.txt

局限freeze 是「环境里装着啥」,不区分直接依赖 / 传递依赖。更严肃的做法:

# 只举例:把编译后的锁定文件交给 CI
python -m pip install pip-tools
# pip-compile requirements.in  → 生成完整 pins(需自行查 pip-tools 文档)

或直接采用 uv / poetry / pdm 等工具链。


12.7 可编辑安装(开发库时常用)

在包根目录(含 pyproject.tomlsetup.cfg):

python -m pip install -e .

这像「本地 npm link」:改源码立即影响当前环境,适合开发自研库。


12.8 前端对照表

概念PythonNode.js
环境隔离venvnvm + 每项目 node_modules
包装器pipnpm / pnpm / yarn
清单requirements.txt / pyproject.tomlpackage.json
锁文件工具生成(pip-tools、uv…)package-lock.json

12.9 速记

  1. 先建 venv → 激活 → 再 pip install
  2. 不要提交 .venv;提交依赖声明 / 锁文件。
  3. CI 固定 Python 版本矩阵(例如 3.11、3.12)。

权威延伸12. Virtual Environments and Packages

On this page