← [ BACK_TO_NOTES ]

virtualenv

virtualenv 是 Python 虚拟环境管理工具,用于创建隔离的 Python 运行环境。Python 3 内置了轻量级的 venv 模块。

#resource #evergreen #python #python

[!info] related notes

virtualenv

本页以第三方 virtualenv 为工具对象,并保留标准库 venv 的对照与操作入口;历史别名 venv 用于兼容旧链接,不表示二者是同一实现。

一句话定义

virtualenv 是 Python 的虚拟环境管理工具,用于创建隔离的 Python 运行环境,避免全局包冲突。Python 3 内置了轻量级的 venv 模块。

核心内容

解决什么问题

若不同项目向同一环境安装不兼容依赖,会发生版本冲突:

  • 项目 A 需要 Django 3
  • 项目 B 需要 Django 4
  • 两者无法共存

核心功能

只做一件事:创建纯净、隔离的 Python 运行环境

不做什么:

  • 不定义项目依赖契约;可搭配 pip、生成的 requirements 或上层项目工具
  • 不锁定版本(没有 lock 文件机制)
  • 不管理 Python 版本

virtualenv vs venv

特性virtualenvvenv (内置)
安装第三方包/工具Python 3.3+ 标准库(部分发行版需安装 venv 系统包)
功能更丰富,支持更多选项轻量级,基础功能
速度受种子包缓存与配置影响受 ensurepip 与平台影响;需在同条件下测量
推荐需要高级功能时大多数场景

最小例子

使用 venv(推荐)

# 创建虚拟环境
python -m venv myenv

# 激活虚拟环境
# Unix/macOS
source myenv/bin/activate
# Windows PowerShell 用 .\myenv\Scripts\Activate.ps1
# Windows cmd 用 myenv\Scripts\activate.bat

# 在虚拟环境中安装包
python -m pip install requests

# 退出虚拟环境
deactivate

使用 virtualenv

# 安装 virtualenv
pip install virtualenv

# 创建虚拟环境
virtualenv myenv

# 指定 Python 版本
virtualenv -p /usr/bin/python3.12 myenv  # 路径须已存在

# 激活和退出同上

不必激活也可直接调用 myenv/bin/python(Windows 为 myenv\Scripts\python.exe)。激活主要调整当前 shell 的 PATH,不是进程/权限隔离。环境通常不可直接跨机器搬运,应从依赖契约重建。

依赖管理(手动)

# 导出依赖
python -m pip freeze > requirements.txt

# 安装依赖
python -m pip install -r requirements.txt

常用命令速查

命令作用
python -m venv myenv创建虚拟环境(venv)
virtualenv myenv创建虚拟环境(virtualenv)
virtualenv -p python3.12 myenv选择已可用的解释器
source myenv/bin/activate激活(Unix/macOS)
.\myenv\Scripts\Activate.ps1激活(PowerShell)
myenv\Scripts\activate.bat激活(cmd)
deactivate退出虚拟环境
python -m pip freeze > requirements.txt导出依赖
python -m pip install -r requirements.txt安装依赖
rm -rf myenv删除虚拟环境

边界与易混淆点

局限性

  • 环境工具本身不求解/锁定项目依赖,可与锁定工具配合使用
  • pip freeze 是已安装环境的清单,不记录完整求解意图、所有平台条件或制品哈希
  • 默认隔离项目 site-packages,但仍共享系统资源;不是安全沙箱

不是

  • 不是包管理器:只隔离环境,不管理依赖
  • 不是 Poetry/uv 的替代品:功能更简单,适合简单场景
  • 不是 Python 版本管理器:不能安装不同版本的 Python

最佳实践

  1. 每个项目一个虚拟环境
  2. 使用 venv 而非 virtualenv(除非需要高级功能)
  3. 配合 requirements.txt 管理依赖
  4. 将虚拟环境目录加入 .gitignore

适用场景

  • ✅ 简单的单文件脚本
  • ✅ 学习和实验
  • ✅ 不需要依赖锁定的项目
  • ✅ 已有成熟项目使用 requirements.txt
  • 需要严格锁定时搭配依赖锁定流程;发布库可另用构建/发布工具
  • 新项目也可使用,是否采用 Poetry/uv 取决于需要整合哪些职责

参考:venv、virtualenv、pip freeze。

创建于 2025/1/1 更新于 2026/10/6
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本