Windows下Python创建虚拟环境的完整步骤(CMD与PowerShell)
本文详解在Windows系统下使用CMD与PowerShell创建并激活Python虚拟环境(venv)的完整流程,包含前置环境检查、核心命令执行、PowerShell执行策略权限报错排查及环境验证方法。
在 Windows 环境下进行 Python 开发时,不同项目往往依赖第三方库的不同版本。直接把库安装在全局 Python 解释器中,容易导致版本冲突或卸载残留。通过 Python 内置的 venv 模块,只需在项目目录下执行 python -m venv .venv 即可生成轻量独立的运行环境。针对 Windows 常用的“命令提示符 (CMD)”与“Windows PowerShell”,激活该环境所需的脚本文件与系统执行权限存在差异。本文将按照实际操作顺序,详细讲解环境检查、目录创建、两种终端下的激活方法与权限排错,以及最终的验证与清理步骤。
准备工作:验证 Python 环境与系统 PATH
在创建虚拟环境之前,必须确保系统已正确安装 Python 3.3 或更高版本(内置自带 venv 模块),并且 Python 主程序与 pip 已添加至系统环境变量 PATH 中。
打开 CMD 或 PowerShell,执行以下命令查看当前版本:
python --version
python -m pip --version
若提示 'python' 不是内部或外部命令,也不是可运行的程序,说明在安装 Python 时未勾选“Add python.exe to PATH”选项。读者可以重新运行 Python 安装包选择“Modify”并勾选该选项,或者手动在 Windows“系统属性 - 环境变量”中把 Python 的安装目录及 Scripts 目录加入到用户 PATH 变量中。
步骤一:在项目根目录下创建虚拟环境
虚拟环境应当与具体的工程项目绑定。首先打开终端,使用 cd 命令切换到你的项目工作目录。例如:
cd C:\Projects\my_project
确认当前路径位于项目根目录后,执行创建虚拟环境命令:
python -m venv .venv
在这条命令中:
-m venv:调用 Python 标准库中内置的虚拟环境管理模块。.venv:为所创建环境指定的目录名称。在 Windows 和各类编辑器(如 VS Code、PyCharm)中,推荐命名为.venv或venv,IDE 能够自动检测并将其识别为项目的解释器环境。以点开头的名称还可以避免干扰普通的源码检索。
命令执行后,终端在数秒内不会输出额外文字并直接返回命令提示符,这是正常现象。此时在 my_project 目录下会新增一个 .venv 文件夹。
展开新生成的 .venv 目录,可以看到其内部包含了三个关键构成:
pyvenv.cfg:环境的核心配置文件,记录了底座 Python 的主安装路径及版本号。Scripts/:存放用于该环境的python.exe解释器代理副本、pip.exe依赖管理工具,以及各类终端对应的激活与退出脚本(activate.bat、Activate.ps1等)。Lib/site-packages/:独立的第三方库安装目录。未来在此环境下通过 pip 安装的任何轮子与包,都会只落入该目录中,绝对不会影响全局 Python。
步骤二:激活虚拟环境(CMD 与 PowerShell 对比)
创建目录后,虚拟环境并不会自动生效,必须在当前终端会话中运行激活脚本。激活的本质,是临时修改当前终端会话的 PATH 环境变量,将 .venv\Scripts 置于最前端,并修改终端的提示符文本。
由于 CMD 与 PowerShell 的脚本解析机制不同,所调用的脚本与涉及的权限要求存在关键差异。
方式 1:在命令提示符 (CMD) 中激活
CMD 使用 Windows 经典的批处理机制,直接执行 activate.bat 脚本即可:
.venv\Scripts\activate.bat
可以看到,命令提示符最左侧出现了 (.venv) 标识,表示当前会话已成功切换至虚拟环境。CMD 默认不设脚本执行限制,因此这一步通常可以直接执行成功。
方式 2:在 Windows PowerShell 中激活与权限配置
PowerShell 使用专用的 .ps1 脚本。在 PowerShell 窗口中,执行对应路径:
.\.venv\Scripts\Activate.ps1
在大部分全新的 Windows 10/11 系统中,首次执行该命令通常会遭遇红字报错:
Restricted(严格受限),该策略允许执行单条命令,但禁止运行任何未签名的脚本文件。而 Activate.ps1 属于本地生成的脚本,因此被系统安全机制直接拦截。
推荐解决方法:读者不需要也不应该盲目以管理员权限全局关闭系统保护,最佳实践是只对“当前终端会话进程”或“当前用户”放行本地脚本。推荐在当前 PowerShell 窗口中执行:
Set-ExecutionPolicy -Scope Process RemoteSigned
该命令中:
-Scope Process:授权范围仅限当前这一个打开的 PowerShell 窗口进程。一旦窗口关闭,授权自动失效,不会降低操作系统全局或其他软件的安全性。RemoteSigned:允许运行本地创建的未签名脚本,对于网络下载的脚本仍要求必须拥有受信任的数字签名。
执行完成后,再次运行激活命令,即可顺利激活:
.\.venv\Scripts\Activate.ps1
CMD 与 PowerShell 关键行为差异对照
| 对比维度 | 命令提示符 (CMD) | Windows PowerShell |
|---|---|---|
| 激活脚本文件 | .venv\Scripts\activate.bat |
.\.venv\Scripts\Activate.ps1 |
| 默认权限门槛 | 无拦截,直接允许运行批处理 | 受 ExecutionPolicy 拦截,默认禁止脚本 |
| 安全解决策略 | 无需干预 | 执行 Set-ExecutionPolicy -Scope Process RemoteSigned |
| 路径补全体验 | Tab 键补全斜杠 .venv\Scripts\... |
Tab 键自动添加相对定位前缀 .\.venv\... |
| 退出环境命令 | deactivate |
deactivate |
步骤三:验证隔离状态与安装依赖
当终端提示符出现 (.venv) 后,需要确认系统调用的 Python 确实来自项目目录,而非系统全局目录。
在 CMD 中运行:
where python
在 PowerShell 中运行:
Get-Command python | Select-Object -ExpandProperty Source
排在首行的绝对路径必须是 .venv\Scripts\python.exe,这说明虚拟环境已成功夺取最高优先级。此时可以放心使用 pip 安装任何项目所需的包,例如安装 requests:
pip install requests
安装过程完成后,运行 pip list,可以看到此时环境中仅包含刚安装的 requests 及其必要依赖包,全局环境中的其他庞杂依赖均被完全隔离在外。
步骤四:退出与清理虚拟环境
当当前项目的开发或调试工作结束时,按照以下规范进行退出或清理:
1. 退出虚拟环境
在 CMD 或 PowerShell 中直接输入内置函数名称:
deactivate
回车后,终端提示符前缀的 (.venv) 随之消失,当前会话的 PATH 环境变量自动恢复为激活前的系统原始值。
2. 删除虚拟环境
Python 虚拟环境是完全自包含的“目录型环境”,不会在 Windows 注册表或系统服务中写入任何数据。如果需要丢弃或重建环境,只需退出后直接将 .venv 文件夹从磁盘中删除:
- CMD 删除命令:
rmdir /s /q .venv - PowerShell 删除命令:
Remove-Item -Recurse -Force .venv
高频问题与注意事项
虚拟环境创建时,
pyvenv.cfg 以及 Scripts 目录下的 activate 脚本中记录了当时的绝对文件路径。如果移动或重命名了项目根目录,虚拟环境通常会无法正确定位 Python 解释器。最简便稳妥的解决办法是删除旧的 .venv 文件夹,在新的路径下重新运行 python -m venv .venv。
若系统中安装了多个 Python 版本(例如 Python 3.10 与 Python 3.12),Windows 自带的 Python 启动器
py 可以精准指定版本:
py -3.10 -m venv .venv
切勿把
.venv 文件夹提交到 Git 等代码版本控制仓库中,不同计算机的路径与二进制文件不通用。应当在项目根目录的 .gitignore 中加入一行 .venv/,并通过 pip freeze > requirements.txt 记录依赖清单,供协作者在本地拉取代码后独立重建环境。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









