W weiserv
← 返回博客

WorkBuddy 里跑 Python 脚本结果不回显:PowerShell 输出落盘 + 绕开损坏的 Bash PATH

一句话结论

在 WorkBuddy 的 Bash/PowerShell 工具里跑命令,stdout 经常整段不回显;且 Bash 工具某些轮次 PATH 损坏ls/cat/dirname 报 command not found)。解法:所有「要看结果」的操作改走落盘日志Out-File/Set-Content 写文件 → Read 读回),Python 一律用绝对路径调用,不用 ls 等依赖 PATH 的命令。

场景与触发

  • 现象 A:& $PY script.py *>&1 | Out-File -FilePath $log 之后,Write-Host "exit=$LASTEXITCODE" 的 stdout 为空,工具面板不显示结果。
  • 现象 B:Bash 工具里直接 ls/catcommand not found: ls,说明该轮 shell 的 PATH 没加载。
  • 影响:空输出极易误判为「脚本没跑/失败」,浪费轮次。

解决命令(可复制)

做法 1 —— 结果落盘后读回(PowerShell):

# WorkBuddy 托管 Python(绝对路径,请把 <你的用户名> 换成你自己的 Windows 用户名)
$PY = "C:\Users\<你的用户名>\.workbuddy\binaries\python\envs\default\Scripts\python.exe"
$log = "印刷输出\_run.log"   # 输出到你自己的目录
& $PY "script.py" *>&1 | Out-File -FilePath $log -Encoding UTF8
# 然后另用 Read 工具读 $log,不要依赖面板 stdout

做法 2 —— 绕开 PATH 损坏(Bash 轮次):

# 不用 ls/cat,改用 Read 工具看文件;python 用绝对路径
"C:/Users/<你的用户名>/.workbuddy/binaries/python/envs/default/Scripts/python.exe" script.py

验证结果(真实性自证)

  • 现象 A 复现:多次会话中 Write-Host/*> 输出在工具面板为空,改 Out-File 落盘后 Read 能稳定读到完整输出。
  • 现象 B 复现:Bash 工具个别轮次 ls/dirname 报 not found,切到 PowerShell 或绝对路径 python 后正常。

环境版本

  • OS:Windows 11,WorkBuddy Bash/PowerShell 工具
  • Python:venv envs\default(3.13.12 managed)
广告位占位 · post-inline