Windows下怎么激活Python虚拟环境(CMD与PowerShell)

Jasper
Jasper
发布时间:2026-10-20 | 7人浏览过
原创

在 Windows 系统中,激活 Python 虚拟环境的核心步骤是在对应终端中执行虚拟环境专属的启动脚本。对于命令提示符(CMD),执行的是批处理脚本 activate.bat;对于 PowerShell,执行的则是脚本文件 Activate.ps1。激活成功的标志是终端提示符开头出现带圆括号的环境名(例如 (.venv)),此时当前窗口内执行的 python 与 pip 会自动重定向至该虚拟环境,实现与系统全局依赖的彻底隔离。

一、虚拟环境目录结构与激活工作机制

理解激活过程首先需要了解虚拟环境在 Windows 文件系统中的组织形式。当我们使用 Python 内置命令 python -m venv .venv 创建环境后,目标目录下会生成一套轻量级的运行环境。与 Linux/macOS 的 bin/ 目录不同,Windows 环境的可执行文件和管理脚本存放在 Scripts 文件夹中。

虚拟环境的“激活”并不是启动了一个持续运行的后台服务,而是通过执行一段脚本,对当前命令行会话的环境变量(主要是 PATH)进行了临时重写。脚本将虚拟环境内部的 Scripts 目录追加到系统 PATH 的最前端。这样,当我们在终端输入 python 或第三方库命令时,系统会优先匹配该虚拟环境中的可执行文件,而不是全局安装的 Python。

Windows下怎么激活Python虚拟环境(CMD与PowerShell)
图 1:Windows 虚拟环境目录结构与环境变量重定向原理

二、在 CMD(命令提示符)中激活虚拟环境

CMD 使用 Windows 经典的批处理脚本作为驱动。激活虚拟环境的操作非常直观,通常包含定位项目路径、调用激活脚本与结果验证三个环节。

1. 步骤说明

  1. 打开 CMD 并定位到项目根目录:使用快捷键 Win + R 输入 cmd 回车打开终端。如果项目在其他盘符(如 D 盘),请使用 cd /d D:\project_folder 切换。
  2. 执行激活脚本:输入虚拟环境内部 Scripts 目录下的 activate.bat 路径并回车。在 CMD 下,.bat 扩展名可以省略。
    # 相对路径执行 (假设当前在项目根目录,虚拟环境名为 .venv)
    .venv\Scripts\activate
    
    # 或明确指定完整批处理脚本名称
    .venv\Scripts\activate.bat
  3. 查看终端变化与验证:激活成功后,命令提示符最左侧会出现括号包裹的虚拟环境名称,例如:
    (.venv) D:\project_folder>
    此时运行 where python,终端应输出包含 .venv\Scripts\python.exe 的路径作为首选项:
    (.venv) D:\project_folder> where python
    D:\project_folder\.venv\Scripts\python.exe
    C:\Users\username\AppData\Local\Programs\Python\Python311\python.exe
  4. 退出虚拟环境:当开发完毕需要切回系统默认环境时,在当前提示符下直接输入 deactivate 并回车即可退出。
Windows下怎么激活Python虚拟环境(CMD与PowerShell)
图 2:CMD 与 PowerShell 标准激活操作流程

三、在 PowerShell 中激活虚拟环境及权限报错排查

Windows 10 和 Windows 11 默认的终端环境已逐步转向 PowerShell。在 PowerShell 中激活虚拟环境时,命令语法与安全机制和 CMD 存在显著不同。

1. 标准激活命令

在 PowerShell 中运行当前目录或相对路径下的可执行脚本时,出于安全设计,必须显式加上 .\ 前缀以指明相对路径:

# 在项目根目录下执行 PowerShell 激活脚本
.\.venv\Scripts\Activate.ps1

# 亦可简写为
.\.venv\Scripts\Activate

2. 常见报错:“在此系统上禁止运行脚本”

不少初学者在 PowerShell 中运行上述命令时,会遇到一段红色错误信息:

.\.venv\Scripts\Activate.ps1 : 无法加载文件 D:\project\.venv\Scripts\Activate.ps1,因为在此系统上禁止运行脚本。
有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
+ CategoryInfo          : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

原因分析:Windows 默认的 PowerShell 执行策略(ExecutionPolicy)通常设为 Restricted(受限模式),它禁止运行任何外部未经签名的 .ps1 脚本文件,以防止恶意脚本在未经许可的情况下静默执行。

3. 规范的排查与解决办法

解决该问题无需关闭安全防护,可根据使用习惯选择以下两种合规方案:

推荐做法(仅当前进程临时放行,最安全):

如果你不想修改系统的全局安全策略,可以只对当前开启的这一个 PowerShell 窗口开放权限。关闭该窗口后策略自动失效:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

执行完毕后,直接再次输入 .\.venv\Scripts\Activate.ps1 即可顺利激活。

持久放行做法(针对当前登录用户):如果你经常需要使用虚拟环境,且不想每次开新窗口都输一次授权命令,可以针对当前系统用户设置策略为 RemoteSigned(允许本地脚本直接运行,仅网络下载脚本需要数字签名):

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Windows下怎么激活Python虚拟环境(CMD与PowerShell)
图 3:PowerShell 脚本执行策略拦截排查与解决路径

四、CMD 与 PowerShell 关键差异与注意事项

虽然两个终端都能实现环境隔离,但由于底层语法与执行机制的不同,在实际操作中有几个细节需要特别留意:

1. 路径中包含空格时的处理差异

当项目目录名称含有空格(例如 D:\Python Projects\app)时:

  • 在 CMD 中:直接使用双引号将整个脚本路径括起来即可:
    "D:\Python Projects\app\.venv\Scripts\activate.bat"
  • 在 PowerShell 中:如果仅输入带引号的字符串,PowerShell 只会将其当作普通文本打印输出,而不会执行。此时必须在最前端加上调用运算符 &:
    & "D:\Python Projects\app\.venv\Scripts\Activate.ps1"

2. 退出命令的统一性与环境清理

无论在 CMD 还是 PowerShell 中,只要当前处于激活状态,退出虚拟环境的命令都是通用的 deactivate。需要注意的是,如果你在激活状态下想要彻底删除虚拟环境文件夹,必须先执行 deactivate 退出,或者直接关闭该终端窗口。否则,正在运行的终端可能会占用虚拟环境中的某些 DLL 文件,导致无法删除或报错“文件正在使用中”。

Windows下怎么激活Python虚拟环境(CMD与PowerShell)
图 4:Windows 虚拟环境激活与终端差异速查对比

五、总结速查表

为了便于在日常开发中快速参考,下表汇总了 Windows 两种主流终端在激活 Python 虚拟环境时的关键要素对比:

终端类型 脚本文件 执行命令示例 安全策略约束 退出命令
命令提示符 (CMD) activate.bat .venv\Scripts\activate 无,原生直接执行 deactivate
PowerShell Activate.ps1 .\.venv\Scripts\Activate.ps1 默认受限,需通过 Set-ExecutionPolicy 授权 deactivate

只要牢记“脚本所在路径”以及“PowerShell 需要处理执行策略”这两个核心要素,在 Windows 下管理和使用 Python 虚拟环境就会变得非常流畅与可靠。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表