文章目录
- 使用默认 Python python -m venv venv_name 或指定 Python 版本 python3.11 -m venv venv_name 创建完成后,目录结构大致如下: venv_name/ │ ├─ bin/ (Linux/Mac) 或 Scripts/ (Windows) │ ├─ python 虚拟环境解释器 │ ├─ pip 专属 pip └─ lib/ 或 Lib/ 存放依赖库
- Linux / macOS source venv_name/bin/activate Windows CMD venv_nameScriptsactivate Windows PowerShell venv_nameScriptsActivate.ps1 激活后,命令行前会出现环境名称: (venv_name) $
- pip install requests pip list pip freeze > requirements.txt 导出依赖 pip install -r requirements.txt 安装依赖
- deactivate
目录
- 前言
- 1. 虚拟环境的概念与作用
- 1.1 什么是虚拟环境?
- 1.2 为什么需要虚拟环境?
- 2. 常见虚拟环境管理工具概览
- 3. 使用 venv(标准轻量)
- 3.1 创建虚拟环境
- 3.2 激活虚拟环境
- 3.3 安装与管理依赖
- 3.4 退出虚拟环境
- 4. 使用 virtualenv(经典增强版)
- 4.1 安装 virtualenv
- 4.2 创建虚拟环境
- 4.3 激活与退出
- 4.4 主要区别
- 5. 使用 pipenv(依赖与环境一体化)
- 5.1 安装 pipenv
- 5.2 创建项目环境并安装依赖
- 5.3 激活与退出
- 5.4 导出与复现环境
- 6. 使用 poetry(现代化推荐)
- 6.1 安装 poetry
- 6.2 初始化项目
- 6.3 安装与管理依赖
- 6.4 激活虚拟环境
- 7. 使用 conda(科学计算场景)
- 7.1 创建与激活环境
- 7.2 安装依赖
- 7.3 退出环境
- 8. 项目依赖迁移与环境复现
- 8.1 使用 requirements.txt(经典方式)
- 8.2 使用 lock 文件(现代方式)
- 9. 常见问题与解决方案
- 9.1 Windows PowerShell 无法激活虚拟环境
- 9.2 删除虚拟环境
- 9.3 检查当前 Python 路径
- 10. 最佳实践总结
- 结语
在现代软件开发中,依赖管理 是一个不可回避的话题。对于 Python 开发者而言,不同项目往往依赖不同版本的第三方库。如果所有项目都使用系统全局的 Python 环境,就会产生“依赖冲突”——项目 A 需要 Django 3.2,而项目 B 却只能运行在 Django 4.0 上。
为了解决这一问题,Python 社区提供了 虚拟环境(Virtual Environment) 的机制。通过虚拟环境,我们可以为每个项目创建独立的 Python 运行环境,实现环境隔离和可重复部署。
本文将从 概念、常用工具(venv、virtualenv、pipenv、poetry、conda)、命令实践、最佳实践 等多个方面,系统地介绍 Python 虚拟环境的使用与管理,帮助你更高效地应对实际开发中的环境问题。
虚拟环境(Virtual Environment)是一个 独立的 Python 运行环境,它包含:
- 独立的 Python 解释器
- 独立的
pip包管理器 - 独立的依赖库目录(
site-packages)
这种隔离机制确保了不同项目不会相互干扰。
- 避免依赖冲突:项目 A 和项目 B 可以使用不同版本的同一个库。
- 环境可复现:可以导出依赖配置,在另一台机器上快速重建相同环境。
- 保持系统整洁:不污染全局 Python 环境。
- 便于部署:打包或部署时无需担心其他项目的依赖影响。
核心原则:一项目一环境
核心原则:一项目一环境
Python 社区提供了多种虚拟环境管理工具,不同工具适用于不同场景。
| 工具 | 特点与适用场景 |
|---|---|
| venv | 标准库内置,从 Python 3.3 开始支持,轻量、简单,适合大多数项目 |
| virtualenv | 早期第三方工具,功能比 venv 更丰富,支持旧版 Python |
| pipenv | 集成依赖和虚拟环境管理,使用 Pipfile 与 Pipfile.lock |
| poetry | 现代化工具,支持依赖解析、打包与发布,推荐中大型项目 |
| conda | Anaconda 生态,适合科学计算与深度学习,支持非 Python 包 |

venv 是 Python 标准库自带的虚拟环境工具,无需额外安装。
使用默认 Python
python -m venv venv_name
或指定 Python 版本
python3.11 -m venv venv_name
创建完成后,目录结构大致如下:
venv_name/ │ ├─ bin/ (Linux/Mac) 或 Scripts/ (Windows) │ ├─ python 虚拟环境解释器 │ ├─ pip 专属 pip └─ lib/ 或 Lib/ 存放依赖库

Linux / macOS
source venv_name/bin/activate
Windows CMD
venv_nameScriptsactivate
Windows PowerShell
venv_nameScriptsActivate.ps1
激活后,命令行前会出现环境名称:
(venv_name) $
pip install requests
pip list
pip freeze > requirements.txt 导出依赖
pip install -r requirements.txt 安装依赖
deactivate
virtualenv 是早期常用的虚拟环境管理工具,功能比 venv 更强大,特别是在需要 兼容旧版本 Python 时依然有价值。
pip install virtualenv
指定环境目录
virtualenv venv_name
指定 Python 版本
virtualenv -p /usr/bin/python3.9 venv_name
与 venv 类似:
Linux / macOS source venv_name/bin/activate Windows venv_nameScriptsactivate 退出 deactivate
virtualenv 兼容更广(支持 Python 2.x)
- 提供更多参数(如选择解释器)
- 现代项目中多数情况下
venv 已足够,但维护旧代码时仍常用
virtualenv 兼容更广(支持 Python 2.x)venv 已足够,但维护旧代码时仍常用
pipenv 将虚拟环境管理与依赖管理结合在一起,提供更优雅的开发体验。
pip install pipenv
自动创建虚拟环境并安装 requests
pipenv install requests
pipenv shell 激活环境
exit 退出环境
pipenv lock 生成锁定文件 Pipfile.lock
pipenv install --ignore-pipfile 按锁定文件安装
优势:
- 自动创建和管理虚拟环境
- 使用
Pipfile和Pipfile.lock,便于依赖锁定与团队协作 - 适合对依赖一致性要求较高的项目
poetry 是近年来流行的 Python 包与依赖管理工具,功能比 pipenv 更强大。
curl -sSL https://install.python-poetry.org | python3 -
poetry new my_project
cd my_project
poetry init
poetry add requests
poetry install
poetry shell
exit
优势:
- 自动化虚拟环境管理
- 使用
pyproject.toml和poetry.lock,更易于环境复现 - 适合中大型项目和需要发布的包
conda 是 Anaconda 生态中的环境管理工具,擅长处理科学计算所需的非 Python 库。
conda create -n data_env python=3.10
conda activate data_env
conda install numpy pandas matplotlib
conda deactivate
特点:
- 擅长安装科学计算相关的二进制包
- 避免复杂库的编译问题
- 对数据科学、深度学习开发者尤为友好
在团队开发与部署中,环境一致性非常关键。
pip freeze > requirements.txt
pip install -r requirements.txt
pipenv:Pipfile + Pipfile.lock
poetry:pyproject.toml + poetry.lock
pipenv:Pipfile + Pipfile.lockpoetry:pyproject.toml + poetry.lock优势:
- 锁定依赖版本
- 保证环境在不同机器上的一致性
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
rm -rf venv_name Linux/Mac
rmdir /s venv_name Windows
which python Linux/Mac
where python Windows
推荐做法:
- 每个项目独立虚拟环境
- 使用
requirements.txt或锁定文件(Pipfile.lock/poetry.lock)管理依赖 - 在 CI/CD 和生产环境中重建环境
- 在
.gitignore中忽略虚拟环境目录
避免做法:
- 不要在全局环境中安装项目依赖
- 不要在一个虚拟环境中混用多个项目
- 不要提交虚拟环境目录到代码仓库
Python 虚拟环境是开发过程中不可或缺的工具,能有效避免依赖冲突,保持项目环境独立与整洁。
无论是轻量的 venv、兼容性更强的 virtualenv、一体化的 pipenv、现代化的 poetry,还是专为科学计算优化的 conda,选择合适的工具都能提升开发效率与项目可维护性。
记住这句话:
**“一项目一环境,配合依赖锁定文件,实现真正可复现的开发与部署。”
以上就是Python虚拟环境管理的全指南的详细内容,更多关于Python虚拟环境管理的资料请关注风君子博客其它相关文章!
您可能感兴趣的文章:
- Python虚拟环境管理工具Conda的使用指南
- 使用uv管理python虚拟环境的流程步骤
- Python虚拟环境与依赖管理使用方法全指南
- Python虚拟环境管理工具virtualenv详解
- conda管理Python虚拟环境的实现