Python venv 虚拟环境搭建详解
时间:2026-11-14 07:22 作者:emer 分类: 无
Python venv 虚拟环境搭建详解
一、为什么需要虚拟环境
Python 全局环境只有一份,多个项目依赖的第三方包版本经常冲突:项目 A 要 Django 3.2,项目 B 要 Django 4.2,全局装只能二选一,升级一个包又可能搞坏另一个项目。venv 是 Python 官方自带的轻量级隔离工具,为每个项目创建独立的包目录,项目之间互不干扰,不需要安装额外软件,是新手和线上部署的首选。
二、创建与激活环境
Python 3.3 之后内置 venv,无需 pip 安装。在项目目录执行:
# 创建名为 .venv 的虚拟环境
python3 -m venv .venv
# Linux / macOS 激活
source .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1
激活后命令行前面出现 (.venv) 标识,此时 pip 安装的包都进入这个环境,不影响全局。
三、安装依赖与导出
激活状态下用 pip 安装:
pip install requests==2.31.0
pip install flask
把当前环境依赖导出为 requirements.txt,方便别人复现:
pip freeze > requirements.txt
新机器安装依赖:
pip install -r requirements.txt
四、退出与删除
deactivate
退出激活回到全局环境。整个虚拟环境就是项目里的 .venv 文件夹,直接删除目录即可彻底清理,不会残留。
五、不同 Python 版本并存
python3 指向哪个解释器,venv 就复制哪个版本。需要指定版本时用对应命令:
python3.10 -m venv .venv310
一个项目绑定一个解释器版本,避免版本混用。
六、与 conda、poetry 的区别
- venv:官方轻量,只隔离包,不管理 Python 版本,适合简单项目;
- conda:同时管理解释器版本和包,适合科学计算、多版本共存;
- poetry:在 venv 基础上加依赖锁文件和打包发布,适合现代 Python 工程。
中小项目优先 venv,复杂依赖再上 poetry。
七、常见误区
- 忘了激活就 pip install,包装到全局,环境白建;
- 把
.venv提交进 Git,体积巨大,应加入.gitignore; - requirements.txt 里写死所有间接依赖,跨平台安装报错;
- 删除环境直接 kill 进程,其实只要删文件夹;
- 多个项目共用一个 venv,失去隔离意义。
八、总结
venv 的核心是 python -m venv 创建隔离目录、source 激活、pip 安装、freeze 导出、deactivate 退出。配合 requirements.txt 实现环境复现,用 .gitignore 排除环境目录。掌握这套流程,就能解决 Python 多项目依赖冲突,是开发和部署的基本功。