Python 虚拟环境与 pip 依赖管理入门

举报
yd_260985715 发表于 2026/11/13 06:16:37 2026/11/13
【摘要】 刚学 Python 的新手常会遇到一个尴尬场面:跟着教程装了一个库,版本冲突报错;换个项目又发现依赖互相打架。根源往往不是代码写错了,而是所有项目共用同一套全局 Python 环境。今天聊聊虚拟环境和 pip 依赖管理这套最基础也最实用的组合。为什么需要虚拟环境Python 的包是装在解释器目录下的 site-packages 里的。如果 A 项目需要 requests 2.28,B 项目需...

刚学 Python 的新手常会遇到一个尴尬场面:跟着教程装了一个库,版本冲突报错;换个项目又发现依赖互相打架。根源往往不是代码写错了,而是所有项目共用同一套全局 Python 环境。今天聊聊虚拟环境和 pip 依赖管理这套最基础也最实用的组合。

为什么需要虚拟环境

Python 的包是装在解释器目录下的 site-packages 里的。如果 A 项目需要 requests 2.28,B 项目需要 requests 2.31,全局只装一份,两个项目总有一个要迁就。虚拟环境就是给每个项目单独开一个“小房间”:解释器、已装的包、启动脚本都独立,项目之间互不干扰。删掉环境文件夹,项目依赖就清干净了,不会影响系统和其他项目。

创建与激活

Python 3.3 以后自带 venv 模块,不用额外安装。进入项目目录后执行:python -m venv .venv。这会在当前目录生成一个 .venv 文件夹。激活方式分系统:Windows 上是 .venv\Scripts\activate,macOS 和 Linux 上是 source .venv/bin/activate。激活成功后,终端提示符前面会出现 (.venv) 字样,表示当前命令都在这个环境里生效。退出用 deactivate。

一个习惯:把 .venv 写进 .gitignore,不要提交到版本库。环境可以随时重建,真正要进仓库的是依赖清单。

pip 的基本操作

激活环境后,pip install 装的包只进当前环境。几个常用命令值得记下来:pip install requests 是安装最新版;pip install requests==2.31.0 是安装指定版本;pip list 查看当前环境已装的包;pip uninstall requests 是卸载;pip install -r requirements.txt 是按清单批量安装。

装包慢的时候可以换国内镜像源,例如 pip install -i pypi.tuna.tsinghua.edu.cn/simple requests。临时用一次加 -i 参数即可,长期使用可以在 pip 配置文件里把 index-url 写死。

用 requirements.txt 锁定依赖

项目交付或者换电脑时,别人怎么复现你的环境?靠 requirements.txt。生成它很简单:pip freeze > requirements.txt。这条命令会把当前环境所有包及精确版本号写进文件。拿到项目的人只需新建虚拟环境,再执行 pip install -r requirements.txt,就能得到一套一致的依赖。注意 pip freeze 会列出所有包,包括间接依赖,文件可能比较长,这是正常的。

更好的做法是把 requirements.txt 分成两类:开发依赖和运行依赖。例如测试工具 pytest 只在开发时需要,可以单独放 requirements-dev.txt,主清单保持干净。

几个容易踩的坑

第一,忘记激活环境就 pip install,包会装进全局环境,排查半天发现项目里 import 不到。养成习惯:每次打开终端先看提示符有没有 (.venv)。

第二,多个 Python 版本共存时 python 命令指向不明。用 python --version 和 which python(Windows 用 where python)确认当前解释器路径,必要时用 python3.10 -m venv .venv 这样带版本号的方式创建。

第三,升级 pip 本身。新建环境里的 pip 版本可能较旧,遇到安装报错先试试 python -m pip install --upgrade pip,很多奇怪的安装失败就此解决。

第四,不要在系统自带的 Python 上直接装包。macOS 和部分 Linux 发行版的系统 Python 供系统工具使用,乱装包可能影响系统组件,虚拟环境正是用来隔离这种风险的。

小结

虚拟环境加 requirements.txt 是 Python 开发的标配流程:一个项目一个环境,依赖清单进版本库,环境本身不提交。花十分钟养成这个习惯,后面能省下大量排查版本冲突的时间。等这套流程顺手了,再去了解 Poetry、uv 这类更现代的依赖管理工具,会更容易理解它们解决的是什么问题。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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