You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Augmentor时触发OSError[Errno 5]输入输出错误的求助

问题根源分析

从报错栈能明确,不是图像目录的IO权限问题,而是tqdm进度条在刷新标准错误输出(sys.stderr)时触发的IO错误。Rocky Linux 9与CentOS 8的后台服务环境(比如systemd的输出处理逻辑)存在差异,Discord机器人后台运行时,stderr可能被重定向、关闭或无法正常写入,导致tqdm刷新失败。

解决方案

1. 直接禁用Augmentor的tqdm进度条(最有效)

Augmentor的sample方法支持关闭进度条,替换原有的p.process()调用即可,彻底避免对stderr的操作:

# 替换原来的p.process()
p.sample(0, multi_threaded=True, disable_tqdm=True)

解释:p.process()内部实际调用的是self.sample(0, multi_threaded=True),手动调用时加上disable_tqdm=True就能跳过tqdm的初始化和刷新,从根源解决错误。

2. 重定向tqdm的输出到空设备

如果不想修改Augmentor的调用逻辑,可以在代码开头添加以下代码,强制tqdm将输出定向到空设备:

import sys
from tqdm import tqdm
# 让tqdm输出到/dev/null,避免操作stderr
tqdm.set_defaults(file=open('/dev/null', 'w'))

3. 检查机器人的systemd服务配置

如果机器人是通过systemd服务运行,检查服务文件(比如/etc/systemd/system/discord-bot.service)的StandardError配置:

  • 若设置为StandardError=null,可以改为StandardError=journal+console或StandardError=journal,让stderr正常写入系统日志:
[Service]
...
StandardError=journal+console

修改后执行以下命令生效:

systemctl daemon-reload
systemctl restart discord-bot.service

内容的提问来源于stack exchange,提问作者dangerisgo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:23:13