Python 虚拟环境入门:用 venv 把每个项目隔离开
刚学 Python 的新手常常会遇到一个尴尬的问题:明明在自己的电脑上跑得好好的代码,换一台电脑或者交给别人运行,就报找不到模块,或者版本不对。很多时候问题不在代码本身,而在环境。不同项目对同一个库的要求可能完全不同,一个项目要用旧版本,另一个项目要用新版本,如果都装在同一个系统环境里,很容易互相干扰。Python 虚拟环境就是为了解决这个问题而生的:它给每个项目一个独立的小房间,包和版本互不影响。
一、虚拟环境到底是什么
可以把系统 Python 理解成一间公共仓库,所有项目都从这里拿东西。虚拟环境则是在项目旁边单独开辟的一间小仓库,里面有自己的一份 Python 解释器和包目录。激活虚拟环境后,你安装的包只会进入这个小仓库,不会污染系统环境;退出后,系统又恢复原样。这样做的好处很直接:项目之间互不打架,出了问题也更容易定位,删除环境重建的成本也很低。
二、创建你的第一个虚拟环境
Python 3 自带 venv 模块,不需要额外安装。先进入项目目录,再创建环境:
cd my-project
python -m venv .venv
在 Windows 上,命令里的 python 有时要写成 py,效果一样。创建完成后,项目目录下会出现一个 .venv 文件夹,里面就是这个环境的全部内容。第一次创建可能需要几秒钟,耐心等它完成,不要中途关闭终端。
三、激活与退出
创建好环境只是第一步,接下来要激活它,这样后续的 pip 和 python 命令才会在这个环境里生效。
在 Windows 的命令提示符或 PowerShell 里,激活命令一般是:
.venv\Scripts\activate
在 macOS 或 Linux 的终端里,则是:
source .venv/bin/activate
激活成功后,终端提示符前面通常会多出一个 (.venv) 标记,这就是最直观的判断方法。如果没有看到这个标记,说明还没有真正进入环境,这时安装的包很可能又装到了别处。做完工作后,输入 deactivate 就可以退出环境,提示符也会恢复正常。
四、在环境里装包和记录依赖
激活环境后,再用 pip 安装需要的包,例如:
pip install requests
pip list
这时 pip list 里看到的,就是当前环境里的包,而不是全系统的包。项目做完后,建议把依赖写进一个文件,方便别人复现:
pip freeze > requirements.txt
别人拿到项目后,只要创建并激活自己的虚拟环境,再执行 pip install -r requirements.txt,就能装上同一批依赖。版本尽量写清楚,不要只写包名不写版本,否则过几个月再装,版本变化可能带来意想不到的差异。
五、新手最容易踩的几个坑
第一,不要把虚拟环境文件夹提交到代码仓库。环境里文件很多,而且和操作系统有关,换一台电脑基本不能直接复用。正确的做法是把 .venv 写进 .gitignore,只提交代码和 requirements.txt。第二,不要随意移动或者改名已经创建好的环境文件夹,里面的路径是写死的,移动后很容易失效,删掉重建往往更快。第三,不要在系统 Python 里乱装包,更不要轻易升级系统自带的 Python,很多系统工具依赖它,改坏了会很麻烦。第四,养成先激活再装包的习惯,装包前先看一眼提示符有没有 (.venv)。
六、一个简单好用的工作流
我的建议是:一个项目对应一个虚拟环境,环境文件夹统一命名为 .venv,放在项目根目录。开始写代码之前,先激活环境;安装新包之后,及时更新 requirements.txt;项目结束或者要换电脑时,删掉 .venv 也不心疼,因为随时可以按依赖文件重建。刚开始可能会觉得多了一步,但这一步恰恰是区分随手写脚本和认真做项目的分界线。
虚拟环境本身并不复杂,难的是养成习惯。只要把创建、激活、装包、记录依赖这四步练熟,以后不管是做练习项目、接手别人的代码,还是部署到服务器,你都会少走很多弯路。
- 点赞
- 收藏
- 关注作者
评论(0)