Python 虚拟环境入门 每个项目一个独立的小房间
用 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 的环境问题能少一大半。
- 点赞
- 收藏
- 关注作者
评论(0)