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

Python PPTX库更新后替换图片报SlidePart无related_parts属性问题求助

问题根因

你遇到的AttributeError: 'SlidePart' object has no attribute 'related_parts'报错,是因为新版python-pptx库移除了公开的related_parts属性,官方替换方案为get_rel_by_id()方法,通过关系ID直接获取关联部件。

修复后的函数代码
def replace_img_slide(prs, slide_nbr, shape_nbr, img_path):
    slide = prs.slides[slide_nbr]
    img = slide.shapes[shape_nbr]
    try:
        imgPic = img._pic
    except AttributeError:
        raise AttributeError(
            f"Error for slide: {slide_nbr}, shape: {shape_nbr}, path: {img_path}")
    imgRID = imgPic.xpath('./p:blipFill/a:blip/@r:embed')[0]
    # 仅修改这一行即可,把related_parts字典访问改为get_rel_by_id方法调用
    imgPart = slide.part.get_rel_by_id(imgRID)

    with open(img_path, 'rb') as f:
        rImgBlob = f.read()

    # replace
    imgPart._blob = rImgBlob

    return prs
注意事项
  • 该改动完全兼容原有逻辑,图片替换效果和旧版代码完全一致
  • 其余业务中用到xxx.part.related_parts[rid]的写法,都可以统一替换为xxx.part.get_rel_by_id(rid)
  • 无需修改其他赋值逻辑,ImagePart对象的_blob属性操作方式保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:36:10