PPTX报错AttributeError: module ‘collections‘ has no attribute ‘Container‘

Traceback (most recent call last):

File "/Users/mac/Desktop/douDong/codeWorkSpace/doudong_building_demo/AI_PPT_DEMO/PPT/venv/lib/python3.12/site-packages/pptx/compat/init.py", line 10, in <module>

Container = collections.abc.Container

^^^^^^^^^^^^^^^

AttributeError: module 'collections' has no attribute 'abc'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "/Users/mac/Desktop/douDong/codeWorkSpace/doudong_building_demo/AI_PPT_DEMO/PPT/src/agent/PPTOperationAgent/tool/test/extract_ppt_elements.py", line 1, in <module>

from pptx import Presentation

File "/Users/mac/Desktop/douDong/codeWorkSpace/doudong_building_demo/AI_PPT_DEMO/PPT/venv/lib/python3.12/site-packages/pptx/init.py", line 14, in <module>

from pptx.api import Presentation # noqa

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/Users/mac/Desktop/douDong/codeWorkSpace/doudong_building_demo/AI_PPT_DEMO/PPT/venv/lib/python3.12/site-packages/pptx/api.py", line 15, in <module>

from .package import Package

File "/Users/mac/Desktop/douDong/codeWorkSpace/doudong_building_demo/AI_PPT_DEMO/PPT/venv/lib/python3.12/site-packages/pptx/package.py", line 6, in <module>

from pptx.opc.package import OpcPackage

File "/Users/mac/Desktop/douDong/codeWorkSpace/doudong_building_demo/AI_PPT_DEMO/PPT/venv/lib/python3.12/site-packages/pptx/opc/package.py", line 11, in <module>

from pptx.compat import is_string, Mapping

File "/Users/mac/Desktop/douDong/codeWorkSpace/doudong_building_demo/AI_PPT_DEMO/PPT/venv/lib/python3.12/site-packages/pptx/compat/init.py", line 14, in <module>

Container = collections.Container

^^^^^^^^^^^^^^^^^^^^^

AttributeError: module 'collections' has no attribute 'Container'

直接按住ctrl或command,跳转到源码内部改成这样的

问题分析:

在 Python 3.10 及以上版本中,collections 模块确实不再直接包含 ContainerMappingSequence。相应的类现在被移动到了 collections.abc 中。虽然 python-pptx 库中包含了回退机制(try...except 语句),但它的兼容性代码未能完全适配 Python 3.10+,可能是由于版本的差异或者特定的环境问题。

解决方案:

我们可以尝试以下几个步骤来解决这个问题:

  1. 手动修改回退机制代码

    确保回退机制代码正确无误,有时安装的 python-pptx 版本可能会有一些问题。你可以根据以下步骤修改它。

    • 打开 pptx/compat/__init__.py 文件(路径可能有所不同,取决于你的安装环境),找到以下代码块:
    复制代码

    try: Container = collections.abc.Container Mapping = collections.abc.Mapping Sequence = collections.abc.Sequence except AttributeError: Container = collections.Container Mapping = collections.Mapping Sequence = collections.Sequence

    • 确保在 except AttributeError 块中的代码能正确引用到 collections.abc 模块。你可以试着更新为:
    复制代码

    try: Container = collections.abc.Container Mapping = collections.abc.Mapping Sequence = collections.abc.Sequence except AttributeError: from collections import abc Container = abc.Container Mapping = abc.Mapping Sequence = abc.Sequence

相关推荐
NiceCloud喜云5 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
wordbaby6 小时前
React Native + RNOH:跨页面数据回传的最佳实践与避坑指南
前端·react native
丷丩6 小时前
MapLibre GL JS第22课:查看本地GeoJSON
前端·javascript·map·mapbox·maplibre gl js
Front思7 小时前
AI前端工程师需要具备能力+
前端·人工智能·ai
ZC跨境爬虫9 小时前
跟着 MDN 学CSS day_29:(掌握文本与字体样式的核心艺术)
前端·css·ui·html·tensorflow
李子琪。10 小时前
网络空间安全深度实战:CSRF 漏洞原理剖析与基于 Token 的纵深防御体系构建(全栈实验报告)
前端·安全·csrf
冰暮流星10 小时前
javascript之history对象介绍
前端·笔记
IT_陈寒10 小时前
Vite热更新失灵?你可能漏了这个配置
前端·人工智能·后端
丷丩10 小时前
MapLibre GL JS第19课:实时更新要素
前端·javascript·gis·map·mapbox·maplibre gl js
Mr.Daozhi10 小时前
RAG 进阶实战:跑通 Demo 后我连续翻了 6 次车,逐一修复才真正可用(含 Gradio Web 版)
前端·数据库·langchain·大模型·gradio·rag·科研工具