Python 虚拟环境 venv 入门:一个项目一套依赖,干净又省心

举报
yd_289844453 发表于 2026/11/12 06:10:26 2026/11/12
【摘要】 刚学 Python 时,很多人都是直接在系统里 pip install 装包。第一个项目要 requests 2.x,第二个项目却要旧版本,升级一个就把另一个弄坏了;换台电脑重装,又想不起当初装过哪些包、是哪个版本。这类麻烦,几乎都可以用 Python 自带的 venv 一次解决。 一、venv 是什么venv 是 Python 3.3 起内置的虚拟环境工具。它会在项目目录下复制一份干净的 ...

刚学 Python 时,很多人都是直接在系统里 pip install 装包。第一个项目要 requests 2.x,第二个项目却要旧版本,升级一个就把另一个弄坏了;换台电脑重装,又想不起当初装过哪些包、是哪个版本。这类麻烦,几乎都可以用 Python 自带的 venv 一次解决。

一、venv 是什么

venv 是 Python 3.3 起内置的虚拟环境工具。它会在项目目录下复制一份干净的 Python 解释器和独立的包目录,让每个项目拥有自己的依赖空间。项目 A 装了 Django 5,项目 B 装 Django 4,互不干扰;删掉项目时,连同它的虚拟环境一起删掉,系统 Python 依然干净。它不需要额外安装,学会三组命令就够用了。

二、创建虚拟环境

先进入项目目录,再创建名为 .venv 的环境:

cd my-project
python -m venv .venv

Windows 上如果 python 命令不可用,可以改用 py -m venv .venv。创建成功后,项目里会出现一个 .venv 文件夹,里面就是这个项目专属的 Python 环境。把它加进 .gitignore,不要提交到代码仓库,因为它体积大、且与操作系统有关,换环境重新创建即可。

三、激活与退出

创建只是第一步,激活后安装的包才会进到这个环境里。Windows(PowerShell)执行 .venv\Scripts\Activate.ps1,macOS / Linux 执行 source .venv/bin/activate。激活成功后,命令行前面会出现 (.venv) 这样的前缀,这就是最直观的标志。用完之后输入 deactivate 就能退出,回到系统 Python。

一个容易踩的坑是:忘记激活就 pip install,包又装回了系统环境。每次开新终端、换项目之前,先看一眼命令行前面有没有 (.venv)。

四、装包与还原依赖

激活后,像平时一样用 pip 安装,再把依赖清单保存下来:

pip install requests
pip freeze > requirements.txt

requirements.txt 记录了当前环境里所有包和版本号,是项目的“依赖清单”。别人拿到项目后,只要创建并激活新的虚拟环境,再执行 pip install -r requirements.txt 就能还原。这样开发、测试和部署用的依赖版本保持一致,出现“在我电脑上明明能跑”的概率会小很多。如果某个包升级后出问题,也可以对照清单快速回退到原来的版本。

五、三个实用习惯

第一,一个项目一个环境,不要多个项目共用同一个虚拟环境,否则隔离就失去了意义。第二,定期更新 requirements.txt,装了新包、升级了版本,就重新生成一次,避免清单与实际环境脱节。第三,系统 Python 只用来创建虚拟环境,不直接往里面装项目依赖,系统自带的工具可能依赖特定版本的包,乱装容易影响系统功能。

小结

venv 的思路其实很简单:把依赖关进项目自己的“小房间”,而不是堆在公共区域。创建、激活、装包、记录依赖,四步走下来,你的 Python 项目就有了干净、可复制的环境。下次新建项目时,不妨先花一分钟创建虚拟环境,再开始写代码,这个小习惯会在项目变大之后帮你省下很多排查时间。练习建议:新建一个空项目,用 venv 创建环境,装一个 requests,再用 pip freeze 生成清单,删除环境后重新创建并还原一次,完整走一遍流程就记住了。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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