PowerShell运行env\scripts\activate.bat报无法加载env模块错如何解决
报错原因
- PowerShell对脚本路径的解析规则和CMD不同:直接输入
env\scripts\activate.bat时,PowerShell不会把它识别为当前目录下的相对路径文件,而是将开头的env判定为待加载的系统模块,因此触发了找不到模块、无法自动加载的报错。 - 脚本类型选错了:
.bat格式的激活脚本是专门给CMD命令行用的,Python为PowerShell准备的虚拟环境激活脚本是.ps1后缀的。就算你给bat文件加对路径能执行,它修改的环境变量也只会作用在弹出的CMD子进程里,不会同步到当前PowerShell会话,等于白跑。
解决方法
按顺序操作即可正常激活虚拟环境:
- 先执行
pwd确认当前工作目录确实是C:\Users\EMCEE\Downloads\iPLM\iPLM_web,且该目录下存在env\Scripts子文件夹。 - 执行PowerShell专属的激活命令,注意必须带
.\前缀(这是PowerShell执行当前目录下脚本的强制要求,用来和系统全局命令做区分):
.\env\Scripts\Activate.ps1
- 如果执行上述命令时提示「脚本无法加载,因为在此系统上禁止运行脚本」,是PowerShell默认执行策略的限制,先执行以下命令放开当前用户的脚本执行权限,输入Y确认即可:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
该配置仅允许运行本地创建的可信脚本,拦截网络下载的未签名恶意脚本,不会影响系统安全。配置完成后重新执行激活命令即可。
- 激活成功后,PowerShell命令行输入行的开头会出现
(env)的标识,代表虚拟环境已经正常生效。
补充:如果你就是想用bat脚本激活,那别开PowerShell,直接打开CMD在对应目录下执行
env\scripts\activate.bat就能正常用,两个终端的激活脚本不通用。
内容的提问来源于stack exchange,提问作者Mark NPH
相关产品推荐
相关产品推荐

