6.4 虚拟环境
学会 pip 之后,你迟早会遇到这样的麻烦:项目 A 需要 requests 2.x,项目 B 需要 3.x;或者装了一堆库之后,pip list 里乱七八糟,根本分不清哪个库是给哪个项目装的。虚拟环境就是解决这个问题的。
什么是虚拟环境
可以把虚拟环境理解成:给每个项目单独准备一个干净的、隔离的 Python 环境。
- 在虚拟环境里
pip install的库,只属于这个项目,不会影响系统里的 Python - 每个项目一个环境,互不干扰,删掉也不心疼
- 换台电脑,也能按清单一键装回所有依赖
一个形象的比喻:系统 Python 是"公共厨房",谁都往里堆东西,越来越乱;虚拟环境是"每个项目自己的小厨房",需要什么装什么,清清爽爽。
创建虚拟环境:venv
Python 自带 venv 模块,不用额外安装。先进入你的项目文件夹,然后在终端里执行:
python -m venv .venv
这条命令会在当前文件夹下创建一个名为 .venv 的子文件夹,里面是一份独立的 Python 环境。
💡
.venv是社区约定俗成的名字(也有人用venv),建议就用它,VS Code 等工具能自动识别。
激活虚拟环境
创建好还不能直接用,需要先激活。不同系统命令不一样:
Windows(PowerShell):
.venv\Scripts\Activate.ps1
Windows(cmd 命令提示符):
.venv\Scripts\activate.bat
macOS / Linux:
source .venv/bin/activate
激活成功后,终端提示符前面会多出 (.venv) 字样:
(.venv) PS D:\myproject>
这时候你输入的 python、pip 用的都是这个虚拟环境里的,放心随便装库。
⚠️ Windows PowerShell 如果报错
无法加载文件 ... 因为在此系统上禁止运行脚本,是脚本执行策略的限制。执行下面这条命令放行,然后重新激活即可:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
在虚拟环境里安装库
激活之后,pip 的用法和之前完全一样:
pip install requests
pip list
你会发现 pip list 里干干净净,只有刚装的库和 pip 自己——因为这是一个全新的环境,系统里装过的库在这里是看不到的(这正是"隔离"的意义)。
退出虚拟环境
不想用了,执行:
deactivate
提示符前面的 (.venv) 消失,就回到了系统 Python。
requirements.txt:依赖清单
虚拟环境还有个好搭档:把项目用到的库导出成一份清单文件,方便换电脑或分享给别人。
导出清单(在激活状态下执行):
pip freeze > requirements.txt
生成的 requirements.txt 内容长这样:
certifi==2024.2.2
charset-normalizer==3.3.2
idna==3.6
requests==2.31.0
urllib3==2.2.1
按清单安装(拿到别人的项目后,创建并激活自己的虚拟环境,然后执行):
pip install -r requirements.txt
一条命令,所有依赖按版本装好。以后你在 GitHub 上看到的 Python 项目,几乎都带这个文件。
VS Code 中使用虚拟环境
用 VS Code 打开项目文件夹后,按 Ctrl + Shift + P,输入 Python: Select Interpreter,选择带 .venv 字样的那一项。之后 VS Code 里运行代码、打开终端,都会自动使用这个虚拟环境。
更现代的选择:uv
本节讲的 venv + pip 是 Python 自带的"官方标配",任何电脑上都能用,必须掌握。但现在社区里更流行的是一个叫 uv 的工具——它把"装 Python、建虚拟环境、装库、锁定版本"全包了,而且速度比 pip 快几十倍。掌握了本节的概念之后,学它非常轻松,下一节专门讲。
常见问题
Q:.venv 文件夹要不要备份/上传?
不要。它体积大且和电脑绑定,删了随时可以重建。用 Git 的话,把 .venv/ 写进 .gitignore,只上传 requirements.txt 就够了。
Q:虚拟环境坏了/装乱了怎么办?
直接删掉 .venv 文件夹,重新 python -m venv .venv,再 pip install -r requirements.txt。这就是虚拟环境的好处——随便折腾。
Q:每个小练习都要建虚拟环境吗? 学习阶段的单文件小练习不必。但只要是"一个正经的项目文件夹",尤其要装第三方库时,建议养成先建虚拟环境的习惯。
练习
- 新建一个文件夹
venv_test,在里面创建并激活虚拟环境,用pip list看看里面有什么。 - 在虚拟环境里安装
requests,导出requirements.txt,打开看看内容。 - 执行
deactivate退出,再对比一下系统环境的pip list,体会"隔离"的效果。
本章小结
- 虚拟环境 = 每个项目独立隔离的 Python 环境,互不干扰
python -m venv .venv创建,Activate.ps1/source activate激活,deactivate退出- 激活后终端前面有
(.venv)标记,此时 pip 装的库只属于当前项目 pip freeze > requirements.txt导出依赖,pip install -r requirements.txt一键恢复