直接修改 PowerShell 执行策略即可解决 activate.ps1 被阻止问题:执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,该命令仅对当前用户生效,允许本地脚本(如 activate.ps1)运行且要求下载脚本必须签名,兼顾安全与可用性。

直接改 PowerShell 执行策略就行,不用重装 Python、不用换编辑器、也不用删虚拟环境。
为什么 activate.ps1 会报“禁止运行脚本”
Windows 默认把 PowerShell 的执行策略设为 Restricted,这个策略连本地写的脚本都不让跑——而 venv 生成的 activate.ps1 正好是 PowerShell 脚本。VS Code、PyCharm 默认用 PowerShell 启动终端,所以一激活就崩。
这不是 Python 或虚拟环境的问题,是系统安全策略在拦你。
- 错误典型提示:
.\venv\Scripts\activate : 无法加载文件 ...\activate.ps1,因为在此系统上禁止运行脚本 -
get-executionpolicy返回Restricted就能确认是它 - PowerShell 不认
.bat,也不自动 fallback 到 cmd,所以换路径或重命名没用
推荐用 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
这条命令只对当前 Windows 用户生效,不影响其他账户,也不需要每次开终端都重设,比 -Scope Process 实用得多。
立即学习“Python免费学习笔记(深入)”;
操作步骤:
- 右键「开始」→「Windows PowerShell(管理员)」,点“是”允许提权
- 输
get-executionpolicy看当前值,确认是Restricted - 输
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,回车后输Y - 关掉再开 VS Code / PyCharm 终端,
.\venv\Scripts\activate.ps1就能正常跑了
RemoteSigned 允许你本地写的脚本(比如 activate.ps1),同时要求从网络下载的脚本必须带签名——兼顾安全和可用性。
不想改策略?试试绕过 PowerShell
如果你没法或不愿改执行策略(比如公司锁死策略),有三个轻量级替代方案:
- 在 VS Code 设置里搜
terminal.integrated.defaultProfile.windows,改成Command Prompt或Git Bash,然后用.\venv\Scripts\activate.bat激活 - PyCharm:设置 → Tools → Terminal → Shell path 改成
cmd.exe - 手动激活(不依赖脚本):
set PATH=C:\path\to\venv\Scripts;%PATH%,再python --version验证是否生效
注意:activate.bat 在 cmd 下没问题,但别在 PowerShell 里双击或用 .\activate.bat 运行——它会被当成 PowerShell 脚本拦截。
真正容易被忽略的是作用域(-Scope)和终端类型匹配。很多人设了 -Scope LocalMachine 却在非管理员 PowerShell 里试,或者改了策略却还在用 Git Bash 终端——策略只对 PowerShell 生效。确认你在哪个终端里敲命令,就去对应环境里检查 get-executionpolicy。



















