为什么要隔离环境
大二上学期吃过一次亏:项目 A 用 Flask 2.0,项目 B 用 Flask 3.0,装完 B 后 A 跑不起来了。全局装包就像把所有衣服塞一个柜子——找衣服难,还容易串味。
虚拟环境 = 每个项目有自己的 Python 解释器和包目录。
创建和激活虚拟环境
Python 3.3+ 自带 venv,不需要额外安装:
# 创建虚拟环境(在项目目录下) python -m venv venv # 激活(Windows Git Bash) source venv/Scripts/activate # 激活(Linux/Mac) source venv/bin/activate # 看到命令行前面出现 (venv) 就算成功了
激活后用 pip list 查看——几乎空的,只有 pip 和 setuptools。这才叫干净。
退出虚拟环境:
deactivate
配置国内 pip 源
默认源在海外,速度感人。配置清华镜像:
# 方法一:临时指定 pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple # 方法二:永久配置 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 配置信任(有些库需要) pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
配置文件位置:Windows 在 %APPDATA%\pip\pip.ini,Linux 在 ~/.config/pip/pip.conf。也可以直接手写:
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn
requirements.txt 规范
这是项目的"依赖清单",队友克隆后一条命令装完所有依赖。
# 导出当前环境的包 pip freeze > requirements.txt
生成的文件长这样:
flask==3.0.0 requests==2.31.0 numpy==1.26.2
注意:pip freeze 会包含所有子依赖,文件可能很长。更推荐手动维护核心依赖:
# requirements.txt flask>=3.0 requests numpy gunicorn
队友拿到后安装:
pip install -r requirements.txt
区分依赖环境
稍微大点的项目通常分文件:
requirements/ ├── base.txt # 生产和开发都需要的 ├── dev.txt # 仅开发需要(pytest、black 等) └── prod.txt # 仅生产需要(gunicorn 等)
日常流程总结
# 新项目启动三步走 git clone <项目地址> cd 项目目录 python -m venv venv && source venv/bin/activate && pip install -r requirements.txt
不要 commit venv 目录——在 .gitignore 里加上 venv/。每个开发者在本地自己创建虚拟环境。