module collections has no attribute Hashable PyDocx 库报错

news/2024/9/25 14:06:41

项目背景

在测试PyDocx代码时

```python from pydocx import PyDocX

html = PyDocX.to_html("test.docx") with open("test.html", 'w', encoding="utf-8") as f: f.write(html) ```

发生错误:

Traceback (most recent call last):File "D:\Python\Projects\StudyProjecs\DocumentConverter\main.py", line 5, in <module>html = PyDocX.to_html("test.docx")^^^^^^^^^^^^^^^^^^^^^^^^^^^File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\pydocx.py", line 13, in to_htmlreturn PyDocXHTMLExporter(path_or_stream).export()^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\html.py", line 208, in exportreturn ''.join(^^^^^^^^File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\html.py", line 208, in <genexpr>return ''.join(^File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\base.py", line 117, in exportself._first_pass_export()File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\base.py", line 129, in _first_pass_exportfor result in self.export_node(document):File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\base.py", line 218, in export_nodefor result in results:File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\html.py", line 127, in applyfor result in results:File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\base.py", line 218, in export_nodefor result in results:File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\html.py", line 127, in applyfor result in results:File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\base.py", line 252, in yield_nestedfor result in func(item):File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\base.py", line 218, in export_nodefor result in results:File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\html.py", line 278, in export_paragraphresults = is_not_empty_and_not_only_whitespace(results)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\html.py", line 78, in is_not_empty_and_not_only_whitespacefor item in gen:File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\base.py", line 252, in yield_nestedfor result in func(item):File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\base.py", line 216, in export_noderesults = caller(node)^^^^^^^^^^^^File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\export\base.py", line 344, in export_runif run.effective_properties:^^^^^^^^^^^^^^^^^^^^^^^^File "D:\Python\CondaEnvs\DocumentProcessor\Lib\site-packages\pydocx\util\memoize.py", line 24, in __call__if not isinstance(args, collections.Hashable):^^^^^^^^^^^^^^^^^^^^ AttributeError: module 'collections' has no attribute 'Hashable'

原因

在 Python 3.3 之前的版本中,collections.Hashable 是存在的,但在 Python 3.3 及以后的版本中,它被移动到了 collections.abc 模块中。

解决方法

到路径

虚拟环境路径\Lib\site-packages\pydocx\util\memoize.py

到第24行左右

python def __call__(self, *args):if not isinstance(args, collections.Hashable):# uncacheable. a list, for instance.# better to not cache than blow up.return self.func(*args)if args in self.cache:return self.cache[args]else:value = self.func(*args)self.set_cache(value, *args)return value

if not isinstance(args, collections.Hashable):

改为

if not isinstance(args, collections.abc.Hashable):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/64566.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用FI

合集 - C#(80)1.使用C#将几个Excel文件合并去重分类2023-11-152.C#使用SqlSugar操作MySQL数据库实现简单的增删改查2023-11-163.C#中的类和继承2023-11-174.C#中的virtual和override关键字2023-11-175.C#中的属性2023-11-206.C#winform中使用SQLite数据库2023-11-237.C#简化工作…

VLAN原理和配置

VLAN原理和配置 VLAN:虚拟局域网,将一个物理的局域网在逻辑上划分成多个广播域 华为交换机默认4094个VLAN 在交换机上配置VLAN,同一个VLAN内的用户可以进行二层互访,而不同VLAN 间的用户被二层隔离 VLAN帧格式 Tag用于区分不同的VLAN 没有携带Tag的帧DMAC SMAC Type Data F…

ddsadasdasd

目录理论部分 Ceph的诞生主要是为了解决以下问题: 操作部分 第一部分(虚拟机配置) 一、修改主机名 二、修改防火墙、SELinux状态 三、修改hosts文件 四、验证网络环境(请参阅 第一步、第四步) 五、配置 ceph 源 六、开始执行yum安装 七、创建目录 第二部分(部署ceph) 1…

.net 到底行不行!2000 人在线的客服系统真实屏录演示(附技术详解)

时常有朋友问我性能方面的问题,正好有一个真实客户,在线的访客数量达到了 2000 人。在争得客户同意后,我录了一个视频。升讯威在线客服系统可以在极低配置的服务器环境下,轻松应对这种情况,依然可以做到消息毫秒级送达,操作毫秒级响应。业余时间用 .net 写了一个免费的在…

记.Net Framework中wwwroot文件限制用户访问

背景 项目.Net Framework做的,已经线上跑了很多年了,突然发现用户上传的文件都被放到了wwwroot//Content/Upload目录,这些文件都是比较重要的,程序用来读取解析数据的,但是被直接可以公开访问了。 其实要改也很简单,代码改一下,文件挪一下位置就可以了,但是如果这样改就…

项目可能问问题

项目和简历 hr面试问题 自我介绍 面试官你好,我叫王首都,重庆邮电大学 计算机科学与技术专业研二在读,主要从事java后端开发,项目达人探店,它主要,实现了登录验证,缓存查询,优惠券秒杀,接口限流,以及签到打卡等功能。在上学期间获得了人民奖学金,新生奖学金,学业讲…

MongoDB 双活集群在运营商的实践

本文将着重分享某头部运营商订单中心在实现双活架构过程中的最佳实践,提供详细的技术细节和实际案例。通过介绍项目实施过程中的技术细节,提供类似场景需求的方案参考。在现代电信行业中,订单中心作为核心业务系统之一,承担着处理客户订单、管理订单状态、与各个业务系统进…

信创里程碑:TapData 与海量数据达成产品兼容互认证,共同助力基础设施国产化建设

测试结果显示,TapData LDP V3 与 Vastbase G100 V2.2 完全兼容,整体运行稳定高效,性能表现优秀,可为企业级客户提供可靠的中间件与数据库支撑。近日,深圳钛铂数据有限公司(以下简称钛铂数据)自主研发的钛铂实时数据平台(TapData Live Data Platform,TapData LDP)与北…