W
AI-Wiki
CONCEPT

Python虚拟环境

核心定义

Python虚拟环境是Python生态专为解决多项目环境冲突问题设计的独立运行环境,核心作用为隔离不同项目的Python解释器版本与第三方依赖库版本,避免全局环境安装的依赖被所有项目共用导致的版本兼容问题,是Python开发的必备基础工具。

主流类型

目前Python生态主流的虚拟环境分为两类,分别适配不同的开发场景:

conda管理的全局虚拟环境

依托Anaconda/Miniconda工具进行统一调度,属于全局级别的虚拟环境,核心特性如下:

  1. 同版本Python解释器、第三方依赖库统一存储在anaconda/pkgs目录下,多个虚拟环境可共享引用相同的文件,无需重复下载存储,可大幅节省磁盘空间;
  2. 支持灵活调整虚拟环境的Python版本,conda会自动处理版本切换后的依赖兼容问题;
  3. 适合需要频繁切换不同Python版本、依赖组合的多项目开发场景。

venv创建的项目级便携虚拟环境

是Python 3.3及以上版本内置的原生虚拟环境工具,无需额外安装,核心特性如下:

  1. 创建命令为python -m venv 环境名,默认将所有环境文件存储在执行命令时指定的项目目录下,完全属于当前项目私有;
  2. 无全局共享机制,所有依赖均存储在当前环境目录内,可随项目文件夹整体迁移,迁移后无需重新安装依赖即可正常使用,实现完全的环境隔离;
  3. 仅绑定创建时使用的Python版本,不可后续更换解释器版本,需要更换版本需重新创建环境;
  4. 适合单项目便携分发、需要避免全局环境污染的轻量化开发场景。

激活规则

虚拟环境需激活后才能生效,激活后所有pythonpip相关命令都会指向当前虚拟环境的对应程序,不会影响全局或其他环境,两类环境的激活规则如下:

  1. conda虚拟环境:任意终端路径下执行conda activate 环境名即可激活,激活后终端前缀会显示当前环境名称;
  2. venv虚拟环境:Windows系统下需进入虚拟环境根目录,执行./Scripts/Activate.ps1(PowerShell终端)或./Scripts/activate.bat(CMD终端)激活;Linux/Mac系统下执行source ./bin/activate激活。

边界与注意事项

  1. 一台设备可同时存在任意数量的虚拟环境,未激活任何虚拟环境时,默认使用系统环境变量Path中优先级最高的Python解释器;
  2. 虚拟环境的依赖仅在激活状态下生效,未激活时无法使用环境内安装的第三方库;
  3. venv创建的虚拟环境如果迁移到Python版本不一致的设备上,可能出现兼容问题,建议同架构设备之间迁移使用。

相关条目