如果你刚开始接触 Python,你一定在各种教程里看到过类似 python3 -m venv venv 的命令。很多新手都是照猫画虎,知其然而不知其所以然。
这篇博客将把你脑海中关于 Python 环境管理、pip 安装以及虚拟环境的所有问号,一次性全部拉直。
1. 为什么我们需要虚拟环境?(痛点)
想象一下,如果不加隔离,所有的 Python 第三方库都安装在系统的全局环境里,会发生什么?
- 你两年前的老项目 A 依赖 Django 2.0。
- 你今天的新项目 B 依赖 Django 5.0。
如果你直接运行 pip install Django==5.0,全局环境里的旧版本就会被覆盖。项目 B 跑通了,但你的项目 A 就彻底崩溃了。
这就是大名鼎鼎的**“依赖地狱”**。
2. 什么是 venv?
venv 是 Python 官方提供的一个内置模块。它的作用是给你的每一个项目建造一个绝对物理隔离的“小房间”(沙盒)。
无论你在沙盒里怎么安装、卸载第三方库,怎么把环境弄得一团糟,都绝对不会影响到你电脑上的全局 Python,也不会影响其他项目的小房间。
3. pip install 到底在干嘛?
在了解具体操作前,我们要先明白最常见的命令 pip install requests 是什么意思。把它当作手机操作,你就懂了:
- pip:Python 官方的“应用商店”(包管理器)。
- install:动作指令,“下载并安装”。
- requests:你要下载的“App”名字。这通常是根据你项目的需求决定的(比如做网页请求装
requests,做数据分析装pandas)。
如果项目里有一个 requirements.txt 清单文件,你可以直接运行 pip install -r requirements.txt,应用商店就会帮你一键下载清单里的所有积木块。
4. venv 日常操作四步曲
只要开始写新的 Python 项目,第一件事永远是建虚拟环境!
第一步:创建沙盒
⚠️ 注意:Ubuntu/Debian 用户专属避坑 系统为了精简体积,默认自带的 Python3 可能没有打包 venv 模块。如果你是全新的系统,在第一次建沙盒前,需要先运行一条命令安装该模块:
sudo apt install python3-venv。其他系统(如 Mac/Windows)可忽略此步。
在你的项目文件夹下,打开终端运行:
python3 -m venv .venv
(这会在当前目录下生成一个名为 .venv 的文件夹,这就是你的沙盒。)
第二步:激活沙盒
# Mac/Linux 系统:
source .venv/bin/activate
# Windows 系统:
.venv\Scripts\activate
(激活后,命令行最左边会多出一个 (.venv) 的前缀,说明你已经成功进入沙盒!)
第三步:在沙盒里自由安装
此时你再运行 pip install,所有的库都会被乖乖地安装进 .venv 文件夹里,绝不会污染系统。
第四步:退出沙盒
今天开发完了,想退出这个沙盒回到全局环境,只需要敲一个词:
deactivate
5. 关于名字和路径的常见疑惑
Q1:我看好多教程名字都叫 venv,这个名字可以随便改吗?
完全可以!python3 -m venv <你想起的名字>。
但这就像一种江湖规矩,大家约定俗成喜欢用 venv 或者 .venv(加个点变成隐藏文件夹,看着更干净)。统一命名的好处是,代码编辑器(VS Code/PyCharm)能自动识别它,而且在提交 Git 代码时,只要在 .gitignore 里忽略这个名字,就不会把几百兆的环境文件错传到网上去。
Q2:不同项目目录下,可以用同一个名字吗?
强烈推荐用同一个名字!因为虚拟环境本质上就是一个普通的文件夹。/项目A/.venv/ 和 /项目B/.venv/ 是两个物理上完全隔离的路径,它们就像 C 盘和 D 盘里都有一个叫 test 的文件夹一样,绝对不可能冲突。
Q3:我想删掉项目,或者把环境推倒重来,怎么删干净?
超级简单:直接删掉那个文件夹就行了!
venv 完全不会在系统注册表、环境变量或者深层目录里留下任何“牛皮癣”。你不想要了,直接右键删除文件夹,或者 rm -rf .venv。删完后不留一丝痕迹,一秒钟就能用命令再重新建一个崭新的纯净环境。毫无心理负担!
TIP现在的 Linux(如 Ubuntu 24.04)出于系统安全考虑,已经开始强制禁止在全局使用
pip安装包(会报externally-managed-environment错误)。所以,熟练掌握venv已经是每个 Python 人的必修课了。