Python 虚拟环境 venv 入门:给每个项目一间干净的房间

举报
f841705799 发表于 2026/11/14 15:08:30 2026/11/14
【摘要】 刚开始学 Python 时,很多人都会把所有包一股脑装进系统全局环境:今天装 requests,明天装 Django,后天又装一个要求旧版本依赖的工具。没过多久,版本冲突、报错、“在我电脑上明明能跑”就接踵而至。其实 Python 自带了一个轻量解法:venv 虚拟环境。它相当于给每个项目单独准备一间干净的“房间”,互不干扰。 一、什么是虚拟环境虚拟环境就是一份独立的 Python 解释器副...

刚开始学 Python 时,很多人都会把所有包一股脑装进系统全局环境:今天装 requests,明天装 Django,后天又装一个要求旧版本依赖的工具。没过多久,版本冲突、报错、“在我电脑上明明能跑”就接踵而至。其实 Python 自带了一个轻量解法:venv 虚拟环境。它相当于给每个项目单独准备一间干净的“房间”,互不干扰。

一、什么是虚拟环境

虚拟环境就是一份独立的 Python 解释器副本,加一套独立的第三方包目录。进入环境后,pip 安装的包只会落到这个环境里;退出环境后,全局 Python 完全不受影响。不同项目的依赖版本可以并存:一边跑要求 Django 4 的老项目,一边学 Django 5 的新教程,互不打架。

从 Python 3.3 开始,venv 就是标准库的一部分,不需要额外安装,这也是它最适合新手的地方:零成本、够用、不折腾。

二、创建你的第一个虚拟环境

在项目目录下执行:

python -m venv .venv

这条命令会在当前目录生成 .venv 文件夹,里面包含解释器副本和 pip。命名习惯上,社区最常用 .venv,开头的点表示“隐藏”,提醒自己这不是源码。

三、激活与退出

创建只是第一步,关键是“激活”:激活后,终端的 python 和 pip 都会指向这个环境。

Windows PowerShell:

.\.venv\Scripts\Activate.ps1

macOS / Linux:

source .venv/bin/activate

成功后,命令行前面会出现 (.venv) 提示符,这就是“已进入房间”的标志。做完工作,用一句 deactivate 就能退出,提示符消失,回到全局环境。

新手最常见的坑,就是在没有激活的情况下 pip install,结果包还是装到了全局。每次开工前,先看一眼提示符,养成习惯能少走很多弯路。

四、依赖管理:让环境可复制

虚拟环境的真正价值,在团队协作时最明显。装好依赖后,用一条命令把依赖清单写出来:

pip install requests
pip freeze > requirements.txt

requirements.txt 记录了每个包和精确版本号。别人拿到项目后,只要创建虚拟环境并执行:

pip install -r requirements.txt

就能还原出几乎一样的环境。“在我电脑上能跑”的问题,一大半靠这一招解决。

五、三个容易踩的坑

第一,别把 .venv 传到代码仓库。它体积大、依赖操作系统,别人用不上。在 .gitignore 里加上一行 .venv/ 就行。

第二,一个环境不要跨项目复用。图省事把所有项目的包都塞进同一个虚拟环境,等于回到了“一个大房间”的老路。

第三,升级 Python 大版本后,旧虚拟环境不一定能直接用。稳妥的做法是新建环境、重新安装依赖,让 requirements.txt 发挥作用。

六、可以慢慢升级的习惯

等你熟悉了这套流程,还可以继续升级工具链:用 pip-tools 锁定依赖,用 uv 或 Poetry 更快地管理环境,用 Docker 把环境连同系统依赖一起打包。这些都是在 venv 思想上的延伸:隔离、可复制、干净。

虚拟环境可能是 Python 新手最值得先学会的习惯之一。先用 .venv 给每个项目一间干净的房间,后面的学习之路会顺畅很多。今天就可以试试:选一个正在写的项目,创建虚拟环境,重新安装依赖,感受一下从“全局一锅粥”到“各归其位”的变化。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。