每个 Python 项目依赖的库版本都不一样,如果全都装在系统环境里,迟早会互相冲突。虚拟环境就是解决这个问题的:给每个项目一个隔离的、干净的 Python 环境。这篇讲清楚 venv 从创建到日常使用的完整流程。
为什么需要虚拟环境
想象两个场景同时发生:
- 项目 A 依赖
requests==2.25,项目 B 需要requests==2.31; - 全局环境里
pip list已经装了 100 多个包,自己都忘了哪个项目在用。
虚拟环境让每个项目拥有独立的 site-packages,删掉环境就等于删干净了所有依赖。
创建与激活
Python 3.3+ 自带 venv 模块,无需安装:
# 1. 在项目根目录创建名为 .venv 的虚拟环境
python -m venv .venv
# 2. 激活(Windows PowerShell)
.venv\Scripts\Activate.ps1
# 2. 激活(Windows CMD)
.venv\Scripts\activate.bat
# 2. 激活(macOS / Linux)
source .venv/bin/activate
激活成功后命令行前面会出现 (.venv) 标记,此时 python 和 pip 都指向虚拟环境内部:
(.venv) > pip install requests
(.venv) > python main.py
依赖管理:requirements.txt
在虚拟环境中安装的包,记得导出记录,方便别人(或换电脑的自己)复现:
# 导出当前环境的依赖
pip freeze > requirements.txt
# 新机器 / 新环境里一键还原
pip install -r requirements.txt
一个典型的 requirements.txt:
requests==2.31.0
flask==3.0.2
rich==13.7.0
退出与删除
# 退出虚拟环境
deactivate
# 删除虚拟环境:直接删文件夹即可
# Windows: rmdir /s /q .venv
# macOS/Linux: rm -rf .venv
常见坑
- VS Code 没用上虚拟环境:按
Ctrl+Shift+P输入 "Python: Select Interpreter",选择.venv里的解释器; pip install装到了全局:先看命令行有没有(.venv)前缀,没有就先激活;- Activate.ps1 报「禁止运行脚本」:管理员 PowerShell 执行一次
Set-ExecutionPolicy RemoteSigned; .venv不要提交到 Git:把它加进.gitignore,仓库里只保留requirements.txt。
小结
「一个项目一个 venv,依赖写进 requirements.txt」是 Python 开发的基本功。养成习惯后,换机器、部署、协作都会顺畅很多。




评论 0
还没有评论,来抢沙发吧~ 🛋