Python 虚拟环境 venv 入门:隔离依赖、避免污染全局环境

举报
yd_272299389 发表于 2026/11/11 06:13:28 2026/11/11
【摘要】 刚学 Python 时,很多人习惯把所有包都装进全局环境:pip install requests、pip install django……起初一切正常,直到接手第二个项目:旧项目要求 Django 3.2,新项目要用 Django 4.2,升级一个,另一个就跑不起来;更糟的是,卸载某个包时才发现别的项目也在用它。问题的根源不是包本身,而是所有项目共用同一套环境。Python 自带的 ven...

刚学 Python 时,很多人习惯把所有包都装进全局环境:pip install requests、pip install django……起初一切正常,直到接手第二个项目:旧项目要求 Django 3.2,新项目要用 Django 4.2,升级一个,另一个就跑不起来;更糟的是,卸载某个包时才发现别的项目也在用它。问题的根源不是包本身,而是所有项目共用同一套环境。Python 自带的 venv,就是用来解决这个问题的标准工具。

一、venv 是什么

venv 是 Python 3.3 起内置的虚拟环境工具,不用另外安装。它会在项目目录下创建一个独立的“小号 Python”:有自己的解释器链接和 site-packages,装进去的包只对当前项目可见,与全局环境互不干扰。每个项目一个环境,依赖互不打架,出了问题删掉重建也不心疼。

二、三步建好第一个环境

第一步,在项目根目录创建环境,习惯命名为 .venv:

python -m venv .venv

第二步,激活环境。Windows 用 .venv\Scripts\activate,macOS / Linux 用 source .venv/bin/activate。成功后命令行前面会出现 (.venv) 标记。

第三步,在激活状态下安装依赖:

pip install requests

此时包只会装进 .venv,不会污染全局。用完退出很简单,输入 deactivate 即可;想彻底清理,直接删除 .venv 文件夹,项目代码不受影响。

三、让环境可以复现:requirements.txt

只靠脑子记“我装了哪些包”是靠不住的。养成两个习惯:装完包就执行 pip freeze > requirements.txt,把精确版本写进文件;换电脑或同事接手时,先建好 venv 再执行 pip install -r requirements.txt,一条命令还原同样的环境。把 requirements.txt 提交到代码仓库,.venv 则写进 .gitignore,不要提交。

四、新手最容易踩的三个坑

第一,用 sudo pip install 装包:权限和路径都会变乱,虚拟环境里完全没必要加 sudo。第二,在没激活的状态下 pip install:包又装回了全局,等于白建环境,装之前先看一眼有没有 (.venv) 前缀。第三,一个环境多个项目共用:图省事的结果就是回到全局污染的老路。创建环境前,还可以用 python --version 和 where python(Windows)或 which python(macOS、Linux)确认用的是同一个解释器。

五、venv、virtualenv 和 conda 怎么选

三者目标相同,只是适用范围不同:venv 零依赖、开箱即用,日常写脚本和做 Web 项目首选;virtualenv 功能稍多、支持旧版本 Python;conda 更适合数据科学场景,能管理 Python 之外的依赖和不同版本的 Python 本身。新手从 venv 开始,完全够用。

小结

虚拟环境的核心思想只有一句话:项目之间相互隔离,依赖随项目走。新建项目先 python -m venv .venv,激活、安装、冻结版本,这三步形成习惯后,版本冲突、误删依赖这类问题基本不会再找上门。今天就给手头的项目建一个专属环境试试吧。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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