编程学习网 > 编程语言 > Python > Python 中的虚拟环境(Virtual Environment)是什么,为什么要使用它?
2025
06-19

Python 中的虚拟环境(Virtual Environment)是什么,为什么要使用它?


写Python代码的时候,你有没有碰到过这样的情况:一个项目用的是Django 2.2,另一个项目还要跑在Flask 1.0,结果你一不小心在全局环境里装了个包,两个项目就互相影响,跑着跑着报错?说实话,这事儿我早年干过不少回,每次都恨不得打自己一顿。后来才慢慢体会到,Python 的虚拟环境(virtual environment)这东西,是真香。

Python 的虚拟环境,说白了,就是给你搞一个项目级别的隔离空间。你在这个小圈子里装包、配置依赖,外头全都感受不到。而你出了这个圈子,外头世界依旧和谐。这个机制不是Python刚出来时就有的,是后来慢慢折腾出来的。以前Python开发,大家都在用系统环境,一个Python装全天下,简直是自寻死路。
虚拟环境的核心,其实就是路径隔离。我们知道Python执行时会去找模块,这个找的路径是可以配置的,对吧?虚拟环境就是把这套路径定向到你项目下的一个特殊目录,通常叫venv或者.env。一旦你进入虚拟环境,装的所有包,都会跑到这个目录下。系统的包,它统统看不到。
为啥这事儿重要?我讲一个实际例子。几年前我们公司搞了个内部项目,用的是比较新的第三方库 requests-async,另一个老系统还在死磕 requests==2.18,版本不兼容。我们有个倒霉蛋同事,一不小心全局更新了 requests,直接把老系统干崩了。那天晚上运维哥们都快哭了。自从我们开始强制用 virtualenv,这种“包冲突地狱”就再也没发生过。
安装虚拟环境其实很简单,Python自带了一个叫venv的模块。你在项目目录下敲一行:

这时候目录里就多了个叫venv的文件夹。接着你激活它:
Windows:venv\Scripts\activate
macOS/Linux:source venv/bin/activate
激活之后,命令行前面会多出一个 (venv) 的提示,这说明你已经在虚拟环境里了。接下来你想装啥包都随你高兴:


这些包都只会安装在你这个项目的虚拟环境里,外面的系统环境根本看不到。而且你可以用pip freeze > requirements.txt保存依赖列表,别人只要拿到这个文件,就能复现你整个依赖环境。
说到这里,我觉得有必要吐槽一下:一些培训机构还有网上的教程,经常跳过虚拟环境这一步,直接教你 pip install 装全局的包。这种教程,真的坑人不浅。初学者可能看不出问题,但项目一多,版本冲突、路径混乱的问题就像定时炸弹一样爆发。我当年刚入行的时候,也跟着这种教程装了一堆包,结果搞了个“包怪兽”,根本不知道哪个项目在用哪个版本的库。
当然了,Python 社区也不是完美的。说实话,虚拟环境工具有点多,光是命令行版本就有venv、virtualenv、pipenv、poetry,每一个都有自己的命令格式。你如果是个Python老兵,可能会觉得这玩意儿像极了Node.js那堆包管理器:npm、yarn、pnpm……用哪个都行,但团队统一最重要。我们团队后来就统一用venv + pip-tools,干净利落,够用了。
还有一种高级用法,是把虚拟环境和Docker结合用。现在做微服务、做云原生开发,谁还不Docker一把?Docker 本质上就是个操作系统级别的隔离,但如果你在容器里还装个虚拟环境,那你就能做到应用级的双重隔离。我们线上环境很多就是 Docker + venv,既隔离了系统依赖,又避免了包污染。这种组合拳打起来,非常稳。
哦对了,有人可能会问,“conda”算不算虚拟环境?算是,但它是个更大的生态系统,包管理和环境管理一把抓,尤其在数据科学圈子很吃香。但我个人觉得,conda太重了,而且有些包更新慢,不如纯Python环境灵活。就好比你开的是台大SUV,虽然功能全,但油耗高,不适合项目小而快的场景。
最后我想说,虚拟环境这东西,不是什么高大上的技巧,但绝对是Python开发者绕不开的必修课。你可能不需要一开始就把它搞得多复杂,但你一定要从一开始就养成用它的习惯。信我,早用一天,少掉一堆坑。
所以啊,各位新入坑Python的兄弟姐妹们,听我一句劝:每次新建项目之前,先搞个虚拟环境,就像你每次新开账号要先设密码一样,不图别的,就图安心。
说到底,写代码这事儿,本质是跟未来的你自己打交道。你今天偷的懒,迟早要你明天用加班来还。
以上就是“Python 中的虚拟环境(Virtual Environment)是什么,为什么要使用它?的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取