yolov7运行test.py文件出现subprocess.CalledProcessError: Command ‘git tag‘ returned non-zero exit status 12

文章描述了在使用自定义权重进行Yolov7测试时遇到的错误,原因是由于权重文件夹路径中含有大写字母导致程序无法找到权重,进而需要通过网络下载。解决方法是修正路径并确保其只包含小写字母。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在用自己训练好的权重进行test时,出现

Traceback (most recent call last):
  File "/home/wjh/learning/yolov7/test.py", line 319, in <module>
    test(opt.data,
  File "/home/wjh/learning/yolov7/test.py", line 58, in test
    model = attempt_load(weights, map_location=device)  # load FP32 model
  File "/home/wjh/learning/yolov7/models/experimental.py", line 251, in attempt_load
    attempt_download(w)
  File "/home/wjh/learning/yolov7/utils/google_utils.py", line 31, in attempt_download
    tag = subprocess.check_output('git tag', shell=True).decode().split()[-1]
  File "/home/wjh/.conda/envs/yolov7/lib/python3.9/subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/home/wjh/.conda/envs/yolov7/lib/python3.9/subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command 'git tag' returned non-zero exit status 128.

尝试过将subprocess.py文件中的check换为Fasle但是并没有作用,经过排除发现,存储权重的文件夹路径中存在大写字母,导致不能查找到正确的权重文件,导致程序需要自动翻墙去官网下载权重,也就导致最后报错。

### Git标签命令执行失败解决方案 当遇到`subprocess.CalledProcessError: Command 'git tag' returned non-zero exit status 1`错误时,这通常意味着Git在尝试创建或操作标签时遇到了问题。可能的原因包括但不限于权限不足、网络连接不稳定或是本地仓库配置不正确。 #### 权限设置不当 如果当前用户没有足够的权限来修改远程仓库中的标签,则会触发此异常。确保拥有适当的操作权限可以解决问题[^1]。 #### 网络连接问题 有时由于网络波动或其他原因导致与GitHub服务器之间的通信中断也可能引发此类错误。检查并稳定互联网连接有助于排除这类因素的影响。 #### 配置文件冲突 另外一种常见情况是因为`.gitconfig`或者其他相关环境变量设置了错误的信息而引起的认证失败等问题。审查全局以及项目级别的配置文件是否存在潜在的风险点十分必要。 对于上述提到的各种可能性,下面给出具体的排查方法: - **验证身份** 确认已登录到正确的账户,并且SSH密钥已经成功添加到了目标平台。 - **测试连通性** 通过简单的HTTP请求或者克隆其他公共库的方式检验能否正常访问远端资源。 - **清理缓存** 移除旧有的凭证数据(`~/.git-credentials`),重新输入账号密码完成新一轮的身份验证流程。 - **更新工具链** 保持使用的版本控制系统处于最新状态,避免因软件漏洞带来的兼容性隐患。 最后附上一段Python脚本用于捕获并处理类似的异常状况: ```python import subprocess try: output = subprocess.check_output(['git', 'tag'], stderr=subprocess.STDOUT) except subprocess.CalledProcessError as e: print(f"An error occurred while trying to list tags:\n{e.output.decode()}") else: print("Tags listed successfully.") ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值