CONCEPT
Python虚拟环境
核心定义
Python虚拟环境是Python生态专为解决多项目环境冲突问题设计的独立运行环境,核心作用为隔离不同项目的Python解释器版本与第三方依赖库版本,避免全局环境安装的依赖被所有项目共用导致的版本兼容问题,是Python开发的必备基础工具。
主流类型
目前Python生态主流的虚拟环境分为两类,分别适配不同的开发场景:
conda管理的全局虚拟环境
依托Anaconda/Miniconda工具进行统一调度,属于全局级别的虚拟环境,核心特性如下:
- 同版本Python解释器、第三方依赖库统一存储在
anaconda/pkgs目录下,多个虚拟环境可共享引用相同的文件,无需重复下载存储,可大幅节省磁盘空间; - 支持灵活调整虚拟环境的Python版本,conda会自动处理版本切换后的依赖兼容问题;
- 适合需要频繁切换不同Python版本、依赖组合的多项目开发场景。
venv创建的项目级便携虚拟环境
是Python 3.3及以上版本内置的原生虚拟环境工具,无需额外安装,核心特性如下:
- 创建命令为
python -m venv 环境名,默认将所有环境文件存储在执行命令时指定的项目目录下,完全属于当前项目私有; - 无全局共享机制,所有依赖均存储在当前环境目录内,可随项目文件夹整体迁移,迁移后无需重新安装依赖即可正常使用,实现完全的环境隔离;
- 仅绑定创建时使用的Python版本,不可后续更换解释器版本,需要更换版本需重新创建环境;
- 适合单项目便携分发、需要避免全局环境污染的轻量化开发场景。
激活规则
虚拟环境需激活后才能生效,激活后所有python、pip相关命令都会指向当前虚拟环境的对应程序,不会影响全局或其他环境,两类环境的激活规则如下:
- conda虚拟环境:任意终端路径下执行
conda activate 环境名即可激活,激活后终端前缀会显示当前环境名称; - venv虚拟环境:Windows系统下需进入虚拟环境根目录,执行
./Scripts/Activate.ps1(PowerShell终端)或./Scripts/activate.bat(CMD终端)激活;Linux/Mac系统下执行source ./bin/activate激活。
边界与注意事项
- 一台设备可同时存在任意数量的虚拟环境,未激活任何虚拟环境时,默认使用系统环境变量
Path中优先级最高的Python解释器; - 虚拟环境的依赖仅在激活状态下生效,未激活时无法使用环境内安装的第三方库;
- venv创建的虚拟环境如果迁移到Python版本不一致的设备上,可能出现兼容问题,建议同架构设备之间迁移使用。