Python 虚拟环境入门:venv 让项目依赖不再打架

举报
yd_227985793 发表于 2026/11/09 08:12:30 2026/11/09
【摘要】 做过 Python 项目的人大概率都遇过这种场景:A 项目要 requests 2.28,B 项目要 requests 2.31,装了这个那个就跑不起来;或者自己写的脚本能跑,同事拿过去就报缺包。这些问题的根源都是把所有包装进了同一个全局环境里。今天用最短的篇幅讲清楚虚拟环境是什么、怎么用、怎么复现。 一、为什么需要虚拟环境Python 的包默认装到解释器对应的全局 site-package...

做过 Python 项目的人大概率都遇过这种场景:A 项目要 requests 2.28,B 项目要 requests 2.31,装了这个那个就跑不起来;或者自己写的脚本能跑,同事拿过去就报缺包。这些问题的根源都是把所有包装进了同一个全局环境里。今天用最短的篇幅讲清楚虚拟环境是什么、怎么用、怎么复现。

一、为什么需要虚拟环境

Python 的包默认装到解释器对应的全局 site-packages 目录里,所有项目共享。项目一多必然冲突:不同框架要求的依赖版本不一样,升级了新版就可能把老项目搞挂。虚拟环境的思路很简单——给每个项目单独开一块"包目录",装包、卸包都只影响这一块,互不干扰。Python 3.3 之后官方自带 venv 模块,不用额外安装任何东西。

二、三条命令跑起来

假设项目目录是 myproject,只需三步:

1. 进入项目目录,创建虚拟环境:

python -m venv .venv

执行后会在 .venv 目录里生成一套独立的环境,之后所有包都装在这里面。

2. 激活虚拟环境:

.venv\Scripts\activate      (Windows)
source .venv/bin/activate   (macOS/Linux)

激活成功后,命令行前面会多一个 (.venv) 前缀。这一步是关键——只有激活了,pip 装的包才会落到这个环境里。

3. 正常用 pip 装包:

pip install requests

三、几个容易踩的坑

坑 1:忘了激活就装包。 装完发现全局环境又脏了。判断方法很简单:看命令行有没有 (.venv) 前缀,或者用 pip -V 查看路径里有没有 .venv。

坑 2:把虚拟环境提交到 git。 .venv 目录动辄几百兆,还和操作系统强相关。正确做法是提交 requirements.txt 依赖清单,别人克隆后自己创建环境再安装:

pip freeze > requirements.txt        # 生成依赖清单
pip install -r requirements.txt      # 一键安装

坑 3:换机器后环境复现。 只需要两步:先 python -m venv .venv 创建新环境,激活后 pip install -r requirements.txt。装的是什么、什么版本,全在清单里,完全可复现。

四、进阶方向

如果机器上项目很多,可以了解 virtualenvwrapper;做依赖锁定和发布,可以看 Poetry、uv 这类工具。但对新手来说,venv + requirements.txt 已经完全够用——它是 Python 自带的,零额外依赖。等真正体会到"每个项目一个环境"的好处后,再去升级工具链不迟。

写在最后

虚拟环境是 Python 工程化的第一课,十条命令以内就能让依赖冲突彻底消失。建议现在就找个项目走一遍:创建、激活、装包、freeze 导出,四步走完,以后就不会再被"在我电脑上明明能跑"困扰了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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