你遇到的这个提示是说在 PowerShell 中不支持激活你选中的 Python 虚拟环境,建议切换到命令提示符(Command Prompt)。下面我会告诉你几种解决方法,既可以切换到 CMD,也可以在 PowerShell 中直接解决这个问题。
方法1:切换到 Command Prompt(最直接)
这是提示里建议的方法,操作步骤很简单:
-
关闭当前的 PowerShell 窗口
-
按下
Win + R,输入cmd回车,打开命令提示符 -
在 CMD 中进入你的项目目录,然后激活虚拟环境:
bash# 假设你的虚拟环境叫 venv venv\Scripts\activate.bat -
激活成功后,命令行开头会出现
(venv)标识,就可以正常使用了。
方法2:在 PowerShell 中解决(推荐,更方便)
PowerShell 默认限制了脚本执行权限,导致虚拟环境激活脚本无法运行。你可以通过以下步骤解决:
步骤1:以管理员身份打开 PowerShell
- 点击开始菜单,搜索
PowerShell - 右键选择 以管理员身份运行
步骤2:修改执行策略
在管理员模式的 PowerShell 中输入以下命令,按回车:
powershell
Set-ExecutionPolicy RemoteSigned
- 出现提示时输入
Y并回车确认 - 这个命令会允许运行本地的脚本文件(包括虚拟环境激活脚本),但限制远程未签名的脚本,是安全的设置。
步骤3:激活虚拟环境
关闭管理员 PowerShell,重新打开普通的 PowerShell,进入项目目录后执行:
powershell
# 激活虚拟环境(Windows)
.\venv\Scripts\Activate.ps1
# 如果是 Linux/macOS 的 PowerShell
source ./venv/bin/activate
激活成功后,PowerShell 开头会出现 (venv) 标识,就可以正常使用了。
方法3:使用 VS Code 自动适配(如果你用 VS Code)
如果你是在 VS Code 的终端里遇到这个问题:
- 打开 VS Code 的设置(快捷键
Ctrl + ,) - 搜索
terminal.integrated.defaultProfile.windows - 将默认终端从
PowerShell改为Command Prompt - 重启 VS Code 终端,再激活虚拟环境即可。
总结
- 临时解决 :切换到 Command Prompt(CMD),用
venv\Scripts\activate.bat激活环境。 - 永久解决(推荐) :以管理员身份运行 PowerShell,执行
Set-ExecutionPolicy RemoteSigned,之后就能在 PowerShell 中用.\venv\Scripts\Activate.ps1激活环境。 - 执行策略修改后,PowerShell 就能正常支持 Python 虚拟环境的激活,无需再切换到 CMD。
你遇到的 Set-ExecutionPolicy RemoteSigned 提示"不是内部命
令",核心原因是当前的执行环境不是真正的 PowerShell(可能误打开了 CMD 却输入 PowerShell 命令),或者 PowerShell 权限/路径出了问题。下面我一步步教你解决:
第一步:先确认并打开真正的 PowerShell
- 按下
Win + S搜索框,输入 PowerShell(注意不是"命令提示符/CMD"); - 看到"Windows PowerShell"或"PowerShell 7"选项后,右键选择"以管理员身份运行"(必须管理员权限,否则改不了执行策略);
- 打开后先验证:输入
$PSVersionTable回车,如果能显示 PowerShell 版本信息,说明是真正的 PowerShell 环境;如果提示"不是内部命令",说明还是打开错了,重新找正确的 PowerShell 入口。
第二步:重新执行执行策略命令
在管理员模式的 PowerShell 窗口中,输入以下命令(复制粘贴更准确):
powershell
# 先确认命令是否能识别
Get-Command Set-ExecutionPolicy
# 再执行修改策略(指定作用域避免权限问题)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
-Scope CurrentUser:仅修改当前用户的策略,避免系统级权限问题;-Force:跳过确认提示,直接执行。
执行成功后,会显示"执行策略更改"的提示(无报错即成功)。
第三步:如果仍提示"不是内部命令"(兜底方案)
如果确认是真正的 PowerShell 但仍报错,大概率是 PowerShell 执行路径异常,用完整路径执行命令:
powershell
# 调用 PowerShell 核心模块执行策略修改
& "$env:SystemRoot\system32\WindowsPowerShell\v1.0\powershell.exe" -Command "Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force"
第四步:验证是否生效
执行完后,输入以下命令检查:
powershell
Get-ExecutionPolicy -Scope CurrentUser
如果输出是 RemoteSigned,说明策略修改成功,此时再回到普通 PowerShell 窗口,执行 .\venv\Scripts\Activate.ps1 就能正常激活 Python 虚拟环境了。
备用方案:不用改策略,直接绕开(适合不想改系统设置的情况)
如果不想修改执行策略,也可以每次激活虚拟环境时临时允许脚本运行:
- 打开普通 PowerShell(无需管理员);
- 输入以下命令激活虚拟环境(替换成你的虚拟环境路径):
powershell
# 临时允许当前会话执行脚本,然后激活环境
powershell -ExecutionPolicy Bypass -File .\venv\Scripts\Activate.ps1
总结
- 核心问题:误在 CMD 中输入 PowerShell 命令,或未以管理员身份打开 PowerShell;
- 关键操作 :必须打开"管理员模式的 PowerShell",而非 CMD,再执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force; - 验证标准 :执行
Get-ExecutionPolicy输出RemoteSigned即生效,之后就能正常激活 Python 虚拟环境。
如果还是有问题,优先用"备用方案"临时激活环境,避免纠结系统策略修改,不影响使用 Python 虚拟环境。