Python 虚拟环境入门:venv 与 uv,让每个项目各用各的包

举报
yd_283162409 发表于 2026/10/24 06:15:02 2026/10/24
【摘要】 很多人第一次被 Python 坑到,都是因为 pip install 装的东西"互相打架":项目 A 要 requests 2.x,项目 B 要 requests 3.x,全装进系统 Python 里,迟早有一个项目跑不起来。虚拟环境解决的就是这件事——给每个项目一个独立的包目录,各用各的,互不干扰。venv:Python 自带的三板斧Python 3.3 之后自带 venv,不需要装任何东...

很多人第一次被 Python 坑到,都是因为 pip install 装的东西"互相打架":项目 A 要 requests 2.x,项目 B 要 requests 3.x,全装进系统 Python 里,迟早有一个项目跑不起来。虚拟环境解决的就是这件事——给每个项目一个独立的包目录,各用各的,互不干扰。

venv:Python 自带的三板斧

Python 3.3 之后自带 venv,不需要装任何东西。记住三个命令就够了。创建:在项目目录下执行 python -m venv .venv,会在当前目录生成一个 .venv 文件夹,那就是这个项目的"独立小世界"。激活:Linux/macOS 下执行 source .venv/bin/activate,终端提示符前面多出 (.venv) 就是成功了。退出:deactivate,一秒回到系统环境。

激活之后再 pip install,包装的全进 .venv 里。换个项目就换个 .venv,版本冲突从根上消失。注意 .venv 目录不要提交到 Git,.gitignore 里加一行 .venv/,别人拿到你的 requirements.txt 自己重建即可。

uv:更快的新选择

uv 是这两年流行起来的 Python 包管理工具,Rust 写的,安装和解析依赖都比 pip 快一个数量级。装完后常用三招:uv venv 创建环境,uv pip install <包名> 装包,uv pip freeze > requirements.txt 锁版本。它的命令刻意模仿 pip/venv 的心智模型,迁移成本很低。

更进一步可以用 uv init 建项目,它会生成 pyproject.toml,配合 uv add / uv sync 管理依赖和锁文件,相当于把虚拟环境和依赖声明统一在一个工具里。对新项目,我会直接走这条路;老项目继续用 venv 也完全没问题,不必为了追新而迁移。

三个最常见的坑

坑一:编辑器用的还是系统解释器。VS Code 里按 Ctrl+Shift+P 搜 "Python: Select Interpreter",手动选到项目 .venv/bin/python,否则你在终端里装的包,编辑器里照样报红。

坑二:用 sudo pip install 救急。权限不够就加 sudo,装进了系统 Python,和系统自带的工具链打架,修起来比项目还麻烦。虚拟环境里永远不需要 sudo。

坑三:requirements.txt 长期不锁。只写 requests 不写版本号,半年后重建环境装到大版本升级的包,代码直接挂。发布前 freeze 一次,把版本号钉死。

一句话总结:一个项目一个虚拟环境,是写 Python 的基本卫生习惯。venv 零成本上手,uv 更快更现代,选哪个都行,关键是每个项目都用上。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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