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

使用Brightway导入ecoinvent 3.5 cutoff时遇MaybeEncodingError报错求助

Fixing MaybeEncodingError When Importing ecoinvent 3.5 Cutoff with Brightway

你的推测完全正确——这个错误确实和多进程下的pickle序列化有关。Brightway默认启用多进程来加速ecospold2文件的提取,但lxml生成的lxml.etree._ListErrorLog对象没法被pickle序列化,进程间传递结果时就触发了这个报错。

最简单的解决办法:禁用多进程

直接在初始化SingleOutputEcospold2Importer时添加use_mp=False参数,强制用单进程处理文件,这样就不需要在进程间传递无法序列化的对象了。修改后的代码如下:

if 'ecoinvent 3.5 cutoff' not in databases:
    ei35cutofflink=r"H:\Data\ecoinvent 3.5_cutoff_lci_ecoSpold02\datasets"
    # 禁用多进程,规避pickle序列化问题
    ei35cutoff=SingleOutputEcospold2Importer(ei35cutofflink, 'ecoinvent 3.5 cutoff', use_mp=False)
    ei35cutoff.apply_strategies()
    ei35cutoff.statistics()
    ei35cutoff.write_database()

补充说明

虽然单进程处理速度会慢一些,但能直接解决这个序列化问题。如果之后想尝试恢复多进程,可以先检查你的lxml版本是否有相关的序列化改进,或者确保XML解析过程中没有生成这类错误日志对象,但对于完成导入来说,禁用多进程是最直接有效的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:46:04