Python 虚拟环境入门 每个项目一个独立的小房间

举报
yd_218239968 发表于 2026/11/09 10:07:11 2026/11/09
【摘要】 用 Python 做项目迟早会撞上这种事:一个项目要老版本的库,另一个要新版本,装在一起就打架;或者往系统里 pip 装了一堆东西,越装越乱还不敢删。虚拟环境就是给每个项目单独开一个小房间,库只装在房间里,项目之间互不干扰。本文讲清它怎么建、怎么进出、依赖怎么带走,以及三条使用红线。先说不用的下场。Python 的库默认装在系统全局位置,所有项目共用同一套。今天项目 A 装了某个库的 1.0...

用 Python 做项目迟早会撞上这种事:一个项目要老版本的库,另一个要新版本,装在一起就打架;或者往系统里 pip 装了一堆东西,越装越乱还不敢删。虚拟环境就是给每个项目单独开一个小房间,库只装在房间里,项目之间互不干扰。本文讲清它怎么建、怎么进出、依赖怎么带走,以及三条使用红线。

先说不用的下场。Python 的库默认装在系统全局位置,所有项目共用同一套。今天项目 A 装了某个库的 1.0 版本,明天项目 B 需要 2.0,升级完 A 就跑不起来了;更常见的是在一台服务器上装着装着,系统自带的工具依赖的库被你升级掉,连系统功能都跟着出问题。这种冲突不是代码写错了,是大家挤在同一个房间里过日子,迟早要吵架。
虚拟环境的解法很直接:给每个项目建一个独立的文件夹当小房间,里面放着这个项目专属的一套 Python 解释器和库。项目 A 的房间里装 1.0,项目 B 的房间里装 2.0,各过各的,谁也不影响谁;房间不要了整个文件夹删掉就行,系统环境干干净净。创建只要一条命令,在项目目录里执行 python3 -m venv venv,后面那个 venv 是房间文件夹的名字,叫什么都行,这是约定俗成的叫法。
房间建好还要会进出。Linux 和 Mac 上执行 source venv/bin/activate 就算进门,成功后命令行提示符前面会多一个括号标记,提醒你现在身处这个环境;这时候 pip install 装的库全都只进这个房间,python 命令用的也是房间里这一套。干完活执行 deactivate 退出,回到系统环境。Windows 的激活命令路径不同,在 PowerShell 里是 venv\Scripts\Activate.ps1,第一次用如果被执行策略拦住,按提示放行一次即可。记住一个判断标准:拿不准自己在不在环境里,就看提示符前面有没有那个标记。
项目要搬家或者交给别人,房间本身不用搬,带走一张清单就行。在环境里执行 pip freeze > requirements.txt,就把当前装的库和版本全列成一份文件;到新机器上重新建一个空房间,再 pip install -r requirements.txt 一次装齐,环境就原样复活了。这份清单要跟着项目一起保管,版本全写死在里面,少了它,过半年谁也不知道当初装的是哪几个版本。
最后三条红线。第一,房间文件夹不要提交到 Git 仓库,它体积大又和本机绑定,仓库里只放 requirements.txt 就够了。第二,不要图省事几个项目共用一个环境,共用就等于没隔离,冲突迟早回来。第三,不要用 sudo 去给系统 Python 强行装库排障,那是把房间里的问题扩大到整台机器,系统工具跟着遭殃。每个项目一个房间,这习惯养成之后,Python 的环境问题能少一大半。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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