目录
- 什么是 Virtualenv?为什么需要它?
- 安装 Virtualenv
- 基本使用方法
- 常用命令详解
- 最佳实践
- 常见问题与解决方案 (FAQ)
- 替代品:
venv和pipenv
什么是 Virtualenv?为什么需要它?
virtualenv 是一个用于创建独立的 Python 环境的工具。

一个生动的比喻: 想象一下你的电脑是一个厨房。
- 系统 Python (System Python): 就像是厨房里公用的调味架,每个人都用它来放盐、糖、酱油,如果有人放了太多盐或者不小心把糖当成盐放了,大家做的菜都会受影响。
- Virtualenv 环境: 就像是为每个菜(项目)准备的独立小碗,你为“红烧肉”项目准备一个小碗,只放红烧肉需要的调料;为“西红柿鸡蛋”项目准备另一个小碗,只放它需要的调料,这样,项目之间完全不会互相干扰。
核心作用:
- 项目隔离: 避免不同项目之间的库版本冲突,项目 A 需要
requests==2.25.0,而项目 B 需要requests==2.28.0,在virtualenv环境中,每个项目都可以拥有自己独立的requests版本。 - 依赖管理: 每个环境都有自己的
site-packages目录,可以清晰地看到当前项目依赖了哪些库。 - 保持系统 Python 干净: 系统级的 Python 应该只用于操作系统本身需要的管理任务,而不应该被各种项目的库搞得一团糟。
安装 Virtualenv
安装 virtualenv 非常简单,通常使用 Python 的包管理器 pip。
前提条件
确保你的系统中已经安装了 Python 和 pip,你可以在终端/命令行中运行以下命令检查:

# 检查 Python 版本 python --version # 或者 (如果你有多个 Python 版本) python3 --version # 检查 pip 版本 pip --version # 或者 pip3 --version
安装步骤
打开你的终端 (Windows 下是 CMD 或 PowerShell, macOS/Linux 下是 Terminal),运行以下命令:
# 推荐使用 pip3 来安装,以避免与系统旧版本冲突 pip3 install virtualenv
验证安装 安装完成后,运行以下命令检查是否安装成功:
virtualenv --version
如果能输出版本号(16.7),则表示安装成功。
基本使用方法
使用 virtualenv 主要分为三步:创建、激活 和 使用。

创建虚拟环境
假设你的项目文件夹叫做 my_project,首先进入该目录,然后创建一个名为 venv 的虚拟环境。
# 1. 创建并进入项目目录 mkdir my_project cd my_project # 2. 创建虚拟环境 # `venv` 是环境的名字,你可以自定义,`env`, `.env` 等 virtualenv venv
解释:
执行这个命令后,my_project 目录下会出现一个新的 venv 文件夹,这个文件夹就包含了独立的 Python 解释器和 pip。
激活虚拟环境
创建完环境后,你需要“激活”它,让终端知道接下来要使用这个独立的环境。
在 Windows (CMD/PowerShell) 中:
# 在 CMD 中 venv\Scripts\activate.bat # 在 PowerShell 中 (可能需要先执行 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process) venv\Scripts\Activate.ps1
在 macOS / Linux 中:
source venv/bin/activate
如何确认环境已激活? 激活成功后,你终端的命令行最前面会出现环境的名字,像这样:
# (venv) C:\Users\YourUser\my_project> # 或者 # (venv) your-user@your-computer:~/my_project$
这个 (venv) 提示符告诉你,当前终端正在使用 venv 这个虚拟环境。
使用虚拟环境
你可以在这个环境中安装项目所需的库了,这些库只会安装到当前的环境中,不会影响系统 Python。
# 安装项目依赖,Flask pip install Flask # 查看当前环境安装了哪些包 pip list
停用虚拟环境
当你完成工作后,想退出当前环境,只需运行:
deactivate
运行后,命令行前面的 (venv) 提示符就会消失,表示你已经回到了系统环境。
常用命令详解
| 命令 | 描述 |
|---|---|
virtualenv [env_name] |
创建一个名为 [env_name] 的新虚拟环境。 |
virtualenv -p /usr/bin/python3.8 myenv |
指定使用特定路径的 Python 解释器创建环境。 |
source venv/bin/activate |
macOS/Linux: 激活虚拟环境。 |
venv\Scripts\activate |
Windows: 激活虚拟环境。 |
deactivate |
停用当前虚拟环境,返回系统环境。 |
which python (macOS/Linux) / where python (Windows) |
查看当前使用的 Python 解释器路径,激活后,它会指向环境内的 Python。 |
pip list |
列出当前环境中已安装的所有包。 |
pip freeze |
将当前环境中已安装的包及其版本号输出,格式适合用于 requirements.txt。 |
pip install -r requirements.txt |
根据 requirements.txt 文件安装所有依赖。 |
最佳实践
-
将虚拟环境文件夹加入
.gitignore虚拟环境文件夹(如venv)包含了特定于你机器的文件,不应该被提交到版本控制系统(如 Git)中,在项目根目录创建一个.gitignore文件,并添加以下内容:# .gitignore venv/ env/ .venv/ -
使用
requirements.txt共享依赖 当你需要将项目分享给他人时,不应该分享虚拟环境,而应该分享依赖列表。- 生成依赖文件: 在你的虚拟环境中运行:
pip freeze > requirements.txt
- 安装依赖: 其他人克隆你的项目后,创建并激活虚拟环境,然后运行:
pip install -r requirements.txt
- 生成依赖文件: 在你的虚拟环境中运行:
-
为每个项目创建独立的环境 一个项目一个环境,这是
virtualenv的核心原则。
常见问题与解决方案 (FAQ)
Q1: 在 Windows PowerShell 中激活环境时遇到错误 cannot be loaded because running scripts is disabled on this system。
A: 这是 PowerShell 的执行策略导致的,为了安全,默认情况下 PowerShell 不运行脚本,你只需要为当前会话临时修改策略即可。 在 PowerShell 中运行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
然后再尝试激活环境:
.\venv\Scripts\Activate.ps1
这个修改只在当前 PowerShell 窗口有效,关闭后失效,所以不会影响系统安全。
Q2: 如何删除一个虚拟环境?
A: 只需删除代表该环境的文件夹即可。
# 在项目根目录下执行 # macOS/Linux rm -rf venv # Windows (CMD 或 PowerShell) rmdir /s /q venv
Q3: pip 命令找不到,或者提示不是内部或外部命令。
A:
- 检查 Python 和
pip是否已添加到系统环境变量PATH中。 - 使用
python -m pip代替pip,这种方式更可靠,因为它会直接调用与当前 Python 解释器关联的pip。python -m pip install virtualenv
替代品:venv 和 pipenv
虽然 virtualenv 非常经典,但现在 Python 社区也涌现出了一些优秀的替代品。
venv - Python 内置模块
从 Python 3.3 开始,标准库中自带了一个 venv 模块,功能与 virtualenv 基本相同。
- 优点: 无需安装,是 Python 的一部分。
- 缺点: 功能比
virtualenv少,例如不能指定不同版本的 Python
