PowerShell执行策略默认为Restricted导致.ps1脚本无法运行,可临时设为RemoteSigned(CurrentUser)或永久设置(LocalMachine,需管理员权限);VSCode终端默认用PowerShell,可通过Ctrl+Shift+P切换默认终端;Linux/macOS/WSL中.sh脚本需chmod +x赋权;Python脚本终端运行失败多因路径、环境或虚拟环境未激活,而非权限问题。

PowerShell 执行策略阻止脚本运行
VSCode 默认终端是 PowerShell,而 Windows 默认执行策略为 Restricted,连本地 .ps1 脚本都不允许运行,直接报错:File xxx.ps1 cannot be loaded because running scripts is disabled on this system.
这不是 VSCode 的问题,是 PowerShell 的安全限制。临时绕过只对当前会话生效,永久修改需管理员权限:
- 仅当前终端生效(推荐调试时用):
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - 永久生效(需右键 VSCode 以“管理员身份运行”):
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine - 验证当前策略:
Get-ExecutionPolicy -List,重点关注CurrentUser行
RemoteSigned 是较平衡的选择:允许本地脚本,要求远程脚本有有效签名;避免用 Unrestricted 或 Bypass,后者等于关掉所有防护。
VSCode 终端默认启动的是 PowerShell 而不是 CMD 或 Git Bash
即使你装了 Git Bash 或设置了系统默认 shell,VSCode 启动的集成终端仍可能拉起 PowerShell —— 因为它读取的是自己的配置项,不是系统环境。
改终端类型最直接的方式是快捷键 Ctrl+Shift+P → 输入 Terminal: Select Default Profile,然后选中 Git Bash 或 Command Prompt。该设置会写入用户设置:"terminal.integrated.defaultProfile.windows"。
注意两点:
- 如果选了 Git Bash,确保路径正确(如
"C:\Program Files\Git\bin\bash.exe"),否则终端打不开 - 改完后需新建终端(
Ctrl+Shift+`关闭再打开),旧终端不会自动切换 - 某些企业环境组策略会锁死 PowerShell 策略,此时换终端比改策略更可行
脚本没有执行权限(Linux/macOS 类似问题)
在 WSL、macOS 或 Linux 下用 VSCode 写的 .sh 脚本,即使终端是 bash/zsh,也常遇到 Permission denied。根本原因是文件缺少 x 权限位,和 Windows 的执行策略无关。
解决只需一行命令:
chmod +x ./script.sh
常见疏漏点:
- 用 VSCode 的“在终端中运行 Python”插件或 Code Runner 运行
.sh,它底层调用的是sh script.sh,不依赖执行权限;但如果你手动输./script.sh,就必须有x - Git 检出的脚本在 Windows 上可能丢失可执行位,WSL 中需重新
chmod - VSCode Remote-SSH 连过去后,文件权限继承自远端,本地编辑不会自动同步权限
Python 脚本双击/终端运行失败但调试正常
VSCode 调试器(Debug)走的是 Python 解释器直执行,不经过 shell 解析;而终端里敲 python script.py 或双击运行,依赖环境变量、shebang、以及当前工作目录。
典型表现是导入失败、路径错误、找不到模块 —— 尤其当项目含 src/ 结构或用了 pyproject.toml 时:
- 检查终端当前路径是否为项目根目录(
pwd/cd确认),不是的话cd进去再跑 - 确认 VSCode 终端复用了系统 PATH,没被插件或设置污染;可在终端里执行
which python和python -c "import sys; print(sys.executable)"对比 - 如果用了虚拟环境,确保终端已激活:
source venv/bin/activate(macOS/Linux)或venvScriptsctivate(Windows)
权限本身通常不是瓶颈,真正卡住的往往是路径、解释器选择和环境隔离 —— 这些比“被拒绝”字面意思要隐蔽得多。


















