跳到主要内容

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>

这时候你输入的 pythonpip 用的都是这个虚拟环境里的,放心随便装库。

⚠️ 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:每个小练习都要建虚拟环境吗? 学习阶段的单文件小练习不必。但只要是"一个正经的项目文件夹",尤其要装第三方库时,建议养成先建虚拟环境的习惯。

练习

  1. 新建一个文件夹 venv_test,在里面创建并激活虚拟环境,用 pip list 看看里面有什么。
  2. 在虚拟环境里安装 requests,导出 requirements.txt,打开看看内容。
  3. 执行 deactivate 退出,再对比一下系统环境的 pip list,体会"隔离"的效果。

本章小结

  • 虚拟环境 = 每个项目独立隔离的 Python 环境,互不干扰
  • python -m venv .venv 创建,Activate.ps1 / source activate 激活,deactivate 退出
  • 激活后终端前面有 (.venv) 标记,此时 pip 装的库只属于当前项目
  • pip freeze > requirements.txt 导出依赖,pip install -r requirements.txt 一键恢复

下一节:6.5 用 uv 管理 Python 与项目