答案是修改powershell执行策略:运行set-executionpolicy remotesigned -scope currentuser并确认y,即可允许本地未签名脚本(如activate.ps1)运行,且无需管理员权限、不影响系统其他用户。

PowerShell报“无法加载文件Activate.ps1”怎么修
这是PowerShell执行策略(ExecutionPolicy)在拦截,不是Python或虚拟环境本身出错。默认Restricted策略会直接拒绝运行Activate.ps1这类本地脚本,哪怕它来自你自己创建的venv目录。
Get-ExecutionPolicy返回Restricted就确认是策略问题
先验证是不是这个原因:打开PowerShell(不用管理员权限),运行Get-ExecutionPolicy。如果输出是Restricted,那99%就是它了。
-
RemoteSigned和AllSigned也可能触发错误——比如你用pip install下载的第三方包附带.ps1脚本但没签名 -
Get-ExecutionPolicy -List能看全作用域策略,注意CurrentUser和LocalMachine谁优先级更高(后者覆盖前者) - 别只查
Get-ExecutionPolicy单条命令结果,它只显示当前生效策略,可能掩盖更细粒度冲突
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser最稳妥
这是开发机上推荐的改法:只影响当前用户,不需管理员权限,允许本地.ps1运行,同时对网络下载脚本仍保持签名要求。
快速生成专业的 Python 脚本和应用代码。一键创建完整项目结构,支持CLI、API、爬虫、Bot、Django等多种项目类型,包含完整的项目结构、配置文件、依赖管理、测试、README和文档。
- 命令是:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,回车后输入Y - 改完立刻生效,不用重启PowerShell,但旧终端里已启动的进程(如正在跑的
python)不受影响 - 如果提示“拒绝访问”,说明组策略(
gpedit.msc里配置的)已锁定策略,此时Set-ExecutionPolicy命令无效,得去组策略编辑器里调 -
-Scope Process适合CI/CD临时场景,但每次新开终端都得重跑,不适合日常开发
绕过策略直接运行Activate.ps1的替代方案
不想动策略?也可以跳过检查直接激活:
- 用
powershell -ExecutionPolicy Bypass -File ".\venv\Scripts\Activate.ps1",路径必须是绝对路径或用.\相对写法 - 或者干脆换cmd:运行
venv\Scripts\activate.bat,完全避开PowerShell策略限制 - VS Code终端默认用PowerShell,可在设置里把终端默认Shell改成
Command Prompt或Git Bash - 注意:
Bypass不校验任何脚本,仅限可信环境用;且不能用.\venv\Scripts\activate这种点号调用,必须显式用powershell -File
真正容易被忽略的是组策略锁定和作用域叠加——哪怕你用管理员改了LocalMachine策略,公司域策略仍可能把它强制拉回Restricted。遇到改了没用,第一反应不该是再试一遍,而是先Get-ExecutionPolicy -List看全貌。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










