Python 虚拟环境入门:从 venv 创建到依赖管理的完整实践

举报
yd_259811995 发表于 2026/10/31 06:09:04 2026/10/31
【摘要】 为什么每个 Python 项目都值得一个独立的虚拟环境?很多新手一开始都在系统 Python 里直接 pip install,项目一多,依赖版本很快打架:A 项目要 requests 2.28,B 项目要 2.32;一个库升级,另一个项目突然跑不起来。虚拟环境就是给每个项目划一块干净的试验田,解释器和第三方包互不干扰,出了问题删掉重建也不心疼。 一、什么是虚拟环境虚拟环境是一份独立的 Pyt...

为什么每个 Python 项目都值得一个独立的虚拟环境?很多新手一开始都在系统 Python 里直接 pip install,项目一多,依赖版本很快打架:A 项目要 requests 2.28,B 项目要 2.32;一个库升级,另一个项目突然跑不起来。虚拟环境就是给每个项目划一块干净的试验田,解释器和第三方包互不干扰,出了问题删掉重建也不心疼。

一、什么是虚拟环境

虚拟环境是一份独立的 Python 运行目录,里面有自己的解释器副本、pip 和 site-packages。激活后,命令行里的 python 和 pip 都会指向它,而不是系统全局环境。项目 A 装 Django 4,项目 B 装 Django 5,可以并存。更重要的是,它让“在我机器上能跑”变成可复现的依赖清单,而不是口头经验。

二、用 venv 创建并激活

Python 3.3 起自带 venv,不需要额外安装。在项目根目录执行:

python3 -m venv .venv
source .venv/bin/activate

Windows PowerShell 下激活命令是 .venv\Scripts\Activate.ps1。成功后命令行前面会出现 (.venv) 前缀,这就是最直观的确认方式。退出用 deactivate。建议把目录命名为 .venv,并在 .gitignore 里加上它,虚拟环境本身不应该进版本库。

三、依赖管理要养成三个习惯

第一,安装后立刻固化版本:pip freeze > requirements.txt。第二,新环境先装依赖再跑代码:pip install -r requirements.txt,这样同事或服务器能一键复现。第三,区分运行依赖和开发依赖,测试、格式化工具可以单独放进 requirements-dev.txt,避免生产环境装一堆用不上的包。版本约束不必全部钉死,但关键库建议写明大版本范围,升级时心里有数。

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

一是激活了环境,却用绝对路径调用了系统 Python,检查办法是先跑 which python 或 where python。二是把 .venv 提交到了 Git,仓库瞬间变大,删掉后重新创建即可。三是直接用 sudo pip install 往系统里装包,既污染环境又可能破坏系统工具,虚拟环境里完全不需要 sudo。四是多个项目共用一个环境,图省事最后还是回到版本冲突的起点,项目一换就新建环境,成本其实很低。

五、venv、virtualenv 和 conda 怎么选

只做纯 Python 开发,标准库 venv 已经够用;需要支持旧版本或更快的创建速度,可以用 virtualenv;涉及科学计算、非 Python 依赖或跨语言环境,conda 的包管理面更广。但工具不是越多越好,一个团队统一一种约定,比每个人用不同工具更重要。进阶之后可以再看 pyproject.toml、pip-tools 或 uv,它们解决的是依赖解析和锁定,比手动维护 requirements 更稳。

六、排障清单

激活后前缀没出现,先确认 shell 类型和激活脚本是否对应;pip 装不上包,先看网络和镜像源,再看 Python 版本是否被库放弃支持;依赖冲突时不要一个个试运气,用 pip check 看冲突关系,必要时新建干净环境重新安装。把“删掉重建”当成正常操作,而不是最后手段,心态会轻松很多。

虚拟环境不是炫技,而是职业习惯:隔离、固化、可复现。项目开始的第一条命令先建环境,结束时留下一份 requirements,这两步做扎实,后续的部署、协作和排障都会顺很多。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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