如果你刚接触 Python 开发,大概率会遇到这样的问题:A 项目需要requests==2.25.0,B 项目却要求requests==3.0.0,直接安装会导致一个项目运行报错;或者换了电脑,想复现之前的项目,却因为依赖版本不对折腾半天。
这就是 Python 虚拟环境要解决的核心问题 ——为每个项目创建独立的 Python 运行环境,隔离不同项目的依赖包。今天就用最通俗的方式,带你搞定 Python 虚拟环境的使用。
一、为什么需要虚拟环境?
Python 默认把第三方包安装在「全局环境」中,所有项目共用这些包:
- ❌ 不同项目依赖版本冲突,改了一个项目的包,另一个项目就崩了;
- ❌ 全局包越装越多,时间久了分不清哪些包是哪个项目用的;
- ❌ 部署项目时,无法精准复刻开发环境,出现「本地能跑,线上报错」。
而虚拟环境就像给每个项目建了一个「独立房间」:
- ✅ 每个房间有自己的 Python 解释器和依赖包,互不干扰;
- ✅ 只安装当前项目需要的包,环境干净;
- ✅ 可导出依赖清单,一键复刻环境。
二、Python3 自带的虚拟环境工具:venv
Python 3.3 及以上版本内置了venv模块,无需额外安装,是新手的首选。
1. 创建虚拟环境
打开终端(Windows 用 CMD/PowerShell,Mac/Linux 用终端),进入你的项目目录,执行以下命令:
# 语法:python -m venv 虚拟环境名称(建议用venv,直观好记)
python -m venv venv
执行后,项目目录下会生成一个名为venv的文件夹,里面包含了独立的 Python 解释器、pip 工具和依赖目录。
注意:
- Windows 如果提示
python不是内部命令,换成python3或py -3; - Mac/Linux 如果系统自带 Python2,建议用
python3 -m venv venv。
2. 激活虚拟环境
创建后需要「激活」才能使用这个独立环境,激活后终端会显示虚拟环境名称(比如(venv)),表示当前操作的是这个隔离环境。
| 系统 | 激活命令 |
|---|---|
| Windows (CMD) | venv\Scripts\activate.bat |
| Windows (PowerShell) | venv\Scripts\Activate.ps1 |
| Mac/Linux | source venv/bin/activate |
PowerShell 激活提示权限问题?
Windows 默认限制脚本执行,只需以管理员身份打开 PowerShell,执行:
Set-ExecutionPolicy RemoteSigned
选择「Y」确认即可。
3. 使用虚拟环境
激活后,你安装的所有包都会被放在venv文件夹里,和全局环境无关:
# 安装指定版本的包
pip install requests==2.25.0
# 查看当前环境安装的包
pip list
# 卸载包
pip uninstall requests
4. 退出虚拟环境
执行简单的命令即可退出,回到全局环境:
deactivate
5. 导出 / 导入依赖清单(核心实用技巧)
开发完成后,导出当前环境的依赖清单,方便自己或他人复刻环境:
# 导出依赖到requirements.txt文件
pip freeze > requirements.txt
此时项目目录会生成requirements.txt,里面记录了所有包的名称和版本:
requests==2.25.0
urllib3==1.26.4
...
新环境中,只需创建并激活虚拟环境,执行以下命令即可一键安装所有依赖:
pip install -r requirements.txt
三、进阶:更好用的虚拟环境工具(可选)
venv足够满足基础需求,但还有更便捷的工具,新手熟悉venv后可尝试:
- virtualenv:比
venv更早的第三方工具,功能更丰富(需先安装pip install virtualenv); - conda:适合数据科学 / 机器学习场景,可管理 Python 版本和非 Python 依赖;
- pipenv/poetry:整合「虚拟环境 + 依赖管理」,自动处理依赖版本冲突。
四、常见问题解答
- Q:虚拟环境可以删除吗? A:可以!直接删除项目目录下的
venv文件夹即可,不会影响其他项目。 - Q:为什么激活后 pip 安装的包还在全局? A:大概率是没激活成功,检查终端是否有
(venv)前缀,或重新执行激活命令。 - Q:多个项目需要重复创建虚拟环境吗? A:建议每个项目都创建独立的,这是虚拟环境的核心用法,避免依赖混乱。
总结
- Python 虚拟环境的核心作用是隔离不同项目的依赖包,解决版本冲突问题;
- 新手优先用 Python 内置的
venv,核心流程:创建→激活→使用→退出,配合requirements.txt导出 / 导入依赖; - 每个项目独立创建虚拟环境,养成
pip freeze导出依赖的习惯,能大幅提升开发效率。
从现在开始,给每个 Python 项目配一个专属的虚拟环境吧,告别「包装错、项目崩」的烦恼~