Python 虚拟环境 venv 完全上手指南
为什么需要虚拟环境?
假设这样一个场景:你手上同时进行着两个 Python 项目。
一个是用 pandas 1.5.x 做数据分析的老项目,另一个是用 pandas 2.2.x 打造 REST API 的新服务。
如果你把两个版本的 pandas 都塞进电脑的全局 Python 环境里,结局只有一个——依赖冲突,项目崩溃。
这就是 虚拟环境 的用武之地。
venv 是 Python 3.3 开始官方内置的虚拟环境工具,它的核心价值非常清晰:
- 彻底的隔离管理 – 每个项目拥有一套独立的 Python 包,甚至可以绑定特定的 Python 解释器版本。
- 零污染的全局环境 – 再也不用让系统 Python 塞满各种零散的第三方库。
- 极简的依赖分享 – 一键导出、一键安装,团队协作或跨设备部署都轻松自如。
- 100% 可复现的运行条件 – 不论在哪台电脑上,只要拿到依赖清单,就能还原出完全一致的开发环境。
从零开始:创建与激活
前置检查
请确保你的电脑上安装了 Python 3.3 或更高版本。打开终端,输入以下命令就能看到版本号:
Windows 用户也可以使用:
第一步:为项目创建一个“家”
在任意位置新建一个项目目录,把所有代码和配置文件收纳其中:
第二步:用 venv 一键生成
推荐的创建命令非常简短,最后的 venv 是虚拟环境的目录名(你也可以换成 .venv 这样的隐藏目录):
💡 小贴士
在 Linux / macOS 下,隐藏目录名(如.venv)能让文件夹列表更整洁,推荐项目使用。Windows 的 PowerShell 同样能完美识别。
执行完毕后,目录结构大致如下(不同系统略有差异):
第三步:激活虚拟环境(一定要做!)
激活之后,终端会“锁定”在这个虚拟环境内,所有的 python 和 pip 操作都只会影响 site-packages 里的内容。
Linux / macOS(包括 Git Bash)
Windows - PowerShell (推荐)
首次使用可能需要临时放开执行策略:
Windows - CMD
激活成功的标志是:终端提示符前面会出现一个括号圈起来的虚拟环境名,例如:
日常使用全流程
1. 在虚拟环境中安装包
推荐使用 python -m pip 的写法,能有效避免混淆全局 pip 与虚拟环境 pip:
同样也可以直接写 pip install requests django,但前提是已经激活了环境。
2. 查看已安装的包
随时查看虚拟环境里到底有哪些库:
3. 导出依赖清单(协作/部署必备)
把当前环境所有包的名称和精确版本冻结到 requirements.txt 文件中:
文件内容示例:
4. 从依赖清单重建环境
拿到别人的项目,或是换了新电脑后,只需三步就能重新拥有完全一致的运行环境:
- 进入项目目录
- 创建并激活一个全新的虚拟环境
- 一键安装所有依赖:
5. 退出虚拟环境
工作完成,想回到全局环境时,就输入:
进阶技巧与最佳实践
✅ 推荐的最佳实践
- 一个项目,一个专属环境 – 不管项目多小,都值得拥有自己的虚拟环境。
- 不要将虚拟环境文件夹上传到 Git – 把
venv/(或.venv/)写入.gitignore。虚拟环境体积大且包含系统路径,搬来搬去毫无意义。 - 及时更新
requirements.txt– 每次安装或卸载包后,记得重新执行pip freeze。 - 指定 Python 版本创建 – 如果项目严格要求 Python 3.10,可以直接这样创建:
- 给虚拟环境起一个自定义别名 – 遇到多个环境时能一眼分清:
激活后提示符就会显示为
(my_blog)。
🧩 冷门但好用的功能
继承全局已装的大体积包
如果你在全局装了 10GB 的 PyTorch,不想在每个项目里再复制一份,可以用这个参数:
⚠️ 谨慎使用!全局包的版本变动可能会悄悄影响你的项目。
升级虚拟环境的 Python 版本
全局 Python 从 3.9 升到 3.10 后,已有的虚拟环境可以用下面命令同步升级:
常见问题排查
❓ 激活失败?
- 检查路径:确认你当前位于项目根目录,并且激活脚本的路径与虚拟环境目录名一致。
- PowerShell 执行限制:第一次使用 PowerShell 激活前,务必先执行
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass。 - 文件损坏:最简单的办法 —— 删掉现在这个环境的目录,重新
python -m venv创建一个。
❓ 装的包找不到?
大概率是忘记激活虚拟环境了。
用 which python(Linux / macOS)或 where python(Windows)查看当前 Python 解释器的路径。
如果路径没有指向项目中的 venv/bin/python 或 venv\Scripts\python.exe,那就赶紧重新激活一下。
替代方案怎么选?
venv 是官方内置的轻量级方案,但 Python 生态中还有其他不错的工具:
对于绝大多数普通 Python 项目来说,venv 已经完全够用:无需额外安装、官方持续维护,简单可靠。

