venv
Python虚拟环境(venv)使用教程
为什么需要虚拟环境
想象一下:你现在要同时维护两个Python项目——一个做数据分析用旧版pandas 1.5.x,另一个做API开发必须用新版pandas 2.2.x,要是全装在电脑的全局Python里,必然会崩得乱七八糟。
这就是虚拟环境(venv, Python 3.3+ 官方内置) 存在的核心价值,它解决的痛点具体有这几个:
- 彻底隔离的版本管理:每个项目可以有独立的Python包,甚至独立的Python解释器引用
- 全局环境零污染:不乱塞零散的第三方库,全局只保留最基础的Python和pip就行
- 极简的依赖分享:一键导出、一键安装,团队协作或跨设备部署都不会踩坑
- 100%的可复现性:不管谁在哪台机器上,按照依赖文档就能搭出完全一致的开发环境
手把手创建与激活
前置准备
确保你电脑上安装了 Python 3.3或更高版本——直接在终端输入python --version(Windows可能是py -3 --version)就能检查。
第一步:先给项目找个家
在任意位置创建专属项目目录,避免和其他文件混在一起:
第二步:用venv一键生成
最通用、官方推荐的创建语法是:
💡 小提示:隐藏目录名(比如
.venv)在Linux/macOS下更整洁,推荐项目使用;Windows PowerShell也能识别,不会有额外问题。
生成后的目录结构大概长这样(按系统略有差异):
第三步:激活虚拟环境(必须做!)
激活后,你的终端会「锁定」在当前虚拟环境里,所有Python/pip操作都只会碰site-packages里的内容。
Linux/macOS(含Git Bash for Windows)
Windows
- PowerShell(推荐):
- CMD:
激活成功的标志是:终端提示符前会出现括号包裹的虚拟环境名,比如:
日常使用全流程
1. 在虚拟环境里安装包
直接用pip install就行——但强烈推荐用python -m pip,避免混淆全局和虚拟环境的pip!
2. 查看已安装的包
看看虚拟环境里的包是不是自己需要的:
3. 导出依赖清单(团队/部署必备)
一键把当前环境的所有包及版本号存成requirements.txt:
生成的requirements.txt大概长这样:
4. 从依赖清单恢复环境
拿到别人的项目/换了新电脑?按这个步骤来:
- 进入项目目录
- 创建并激活新的虚拟环境
- 一键安装所有依赖:
5. 退出虚拟环境
用完了想回到全局环境?输入一行简单命令就行:
进阶技巧与最佳实践
✅ 最佳实践清单
- 每个项目1个专属环境:不管项目多小,都别省这一步!
- 绝对不要提交虚拟环境到Git:把
venv/(或你自定义的目录名)加到.gitignore里——虚拟环境体积大,而且每个人的系统路径不一样,提交了没用 - 定期更新
requirements.txt:每次加新包/删旧包,都要重新freeze一次 - 指定Python版本创建:如果项目有明确的Python版本要求(比如必须3.10),可以直接用:
- 给虚拟环境起专属别名:项目太多容易搞混?创建时加
--prompt:激活后提示符就会变成(my_blog)
🧩 冷门但有用的功能
1. 继承全局已有的大体积包
比如你装了10GB的torch在全局,不想每个项目都复制一份?可以用:
⚠️ 谨慎使用!全局包的版本变更可能会影响你的项目
2. 升级虚拟环境的Python版本
如果全局Python从3.9升级到了3.10,想把现有虚拟环境也同步更新:
常见问题排查
1. 激活失败?
- 路径不对:检查你是不是在项目根目录下,激活脚本的路径是不是和虚拟环境目录名一致
- Windows PowerShell执行限制:首次使用PowerShell激活要先执行临时解除限制的命令(见上文激活步骤)
- 文件损坏:试试删掉现有虚拟环境,重新创建一个
2. 装的包找不到?
大概率是忘记激活虚拟环境了!用which python(Linux/macOS)或where python(Windows)确认一下当前Python解释器的路径——如果不是项目下的venv/bin/python或venv/Scripts/python.exe,就重新激活。
替代方案选哪个?
虽然venv是官方内置的轻量工具,但也有其他适合特定场景的选择:
- virtualenv:venv的前身,功能更全(比如支持更早的Python版本),但需要额外安装
- pipenv:把虚拟环境和依赖管理合并成一个工具,但现在社区活跃度一般
- poetry:现代Python项目的「全能选手」,同时做虚拟环境、依赖管理、打包,适合要发布到PyPI的项目
- conda:科学计算/机器学习领域首选,不仅能管Python包,还能管系统级别的依赖(比如CUDA)
但对绝大多数普通Python项目来说,venv已经足够好用——不用额外安装,官方维护,稳定可靠。

