Django开发中为什么需要使用虚拟环境?
虚拟环境的作用及使用必要性
首先用大白话解释下什么叫隔离的Python环境:
你可以把系统自带的全局Python当成小区的公共储物柜,所有住户(你电脑上的所有Python项目)都能用,但你塞我也塞,最后东西混在一起,找的时候根本分不清是谁的,拿错了还容易出事。
而virtualenv这类工具创建的虚拟环境,就相当于你给每个Python项目单独申请的私人储物柜,这个柜子里的Python解释器、你装的所有第三方库(比如Django、requests这些),只归当前这个项目用,和其他项目的虚拟环境、全局Python环境完全隔开,谁也碰不到谁的东西。
至于为什么开发一定要用,主要能帮你避开几个最常见的坑:
- 解决依赖版本冲突问题
比如你同时做两个Django项目,一个是之前接的老项目维护,必须用Django 3.2版本,另一个是新做的项目要用到Django 4.2的新功能。如果都装在全局环境里,两个版本的Django会互相覆盖,总有一个项目跑不起来。用虚拟环境的话,两个项目分别在自己的环境里装对应版本的Django,互不影响。 - 防止全局环境冗余混乱
平时做测试、练手临时装的各种冷门库,只要装在对应项目的虚拟环境里,项目做完不用了,直接删掉虚拟环境的文件夹就能清得干干净净,不会在全局环境里留一堆没用的库,拖慢Python相关工具的响应速度,也不会出现版本混乱的问题。 - 降低项目部署的难度
项目开发完要上线的时候,直接在虚拟环境里执行pip freeze > requirements.txt,就能一键导出当前项目用到的所有依赖和准确版本号,传到服务器之后直接执行pip install -r requirements.txt就能装好完全一致的运行环境,不会把你全局装的其他无关库也导进去,减少部署时各种奇奇怪怪的报错。 - 不用修改系统级权限
部分系统(比如Linux、MacOS)的全局Python路径是受系统权限保护的,装库的时候需要加sudo或者管理员权限,操作不当甚至可能搞坏系统自带的Python,影响系统本身的功能。虚拟环境的所有文件都存在你项目的目录下,装库、改配置都不需要管理员权限,也完全不会碰系统级的Python设置,怎么折腾都不会出大问题。
内容的提问来源于stack exchange,提问作者Cyebukayire
相关产品推荐
相关产品推荐

