python - ecoinvent 3.5 导入错误:MaybeEncodingError:
问题描述
我试图将 ecoinvent 3.5 cutoff 导入到使用 brightway 的项目中,具有以下内容:
if 'ecoinvent 3.5 cutoff' not in databases:
ei35cutofflink=r"H:\Data\ecoinvent 3.5_cutoff_lci_ecoSpold02\datasets"
ei35cutoff=SingleOutputEcospold2Importer(ei35cutofflink, 'ecoinvent 3.5 cutoff')
ei35cutoff.apply_strategies()
ei35cutoff.statistics()
ei35cutoff.write_database()
但我收到以下错误。看起来问题与brightway无关,而是与多处理或pickle有关?我不明白错误消息的含义。
---------------------------------------------------------------------------
MaybeEncodingError Traceback (most recent call last)
<ipython-input-4-f9acb2bc0c84> in <module>
1 if 'ecoinvent 3.5 cutoff' not in databases:
2 ei35cutofflink=r"H:\Data\ecoinvent 3.5_cutoff_lci_ecoSpold02\datasets"
----> 3 ei35cutoff=SingleOutputEcospold2Importer(ei35cutofflink, 'ecoinvent 3.5 cutoff')
4 ei35cutoff.apply_strategies()
5 ei35cutoff.statistics()
C:\miniconda3_py37\envs\ab\lib\site-packages\bw2io\importers\ecospold2.py in __init__(self, dirpath, db_name, extractor, use_mp, signal)
63 start = time()
64 try:
---> 65 self.data = extractor.extract(dirpath, db_name, use_mp=use_mp)
66 except RuntimeError as e:
67 raise MultiprocessingError('Multiprocessing error; re-run using `use_mp=False`'
C:\miniconda3_py37\envs\ab\lib\site-packages\bw2io\extractors\ecospold2.py in extract(cls, dirpath, db_name, use_mp)
91 ) for x in filelist
92 ]
---> 93 data = [p.get() for p in results]
94 else:
95 pbar = pyprind.ProgBar(len(filelist), title="Extracting ecospold2 files:", monitor=True)
C:\miniconda3_py37\envs\ab\lib\site-packages\bw2io\extractors\ecospold2.py in <listcomp>(.0)
91 ) for x in filelist
92 ]
---> 93 data = [p.get() for p in results]
94 else:
95 pbar = pyprind.ProgBar(len(filelist), title="Extracting ecospold2 files:", monitor=True)
C:\miniconda3_py37\envs\ab\lib\multiprocessing\pool.py in get(self, timeout)
655 return self._value
656 else:
--> 657 raise self._value
658
659 def _set(self, i, obj):
MaybeEncodingError: Error sending result: '<multiprocessing.pool.ExceptionWithTraceback object at 0x000001D257C55358>'. Reason: 'TypeError("can't pickle lxml.etree._ListErrorLog objects")'```
解决方案
使用可以use_mp=False
用来了解实际错误是什么(而不是错误不是可腌制的,这会引发一个单独的错误)。在这种情况下,我认为您的数据文件夹有问题,您可以通过将其删除并重新下载或解压缩来解决该问题。
推荐阅读
- ios - 如何知道 iDevice 的当前方向
- javascript - 如何获得每行值总和的总列
- javascript - 用户写作时,如何将文本光标保持在右侧的 html 输入字段中?
- sql - 如何添加日期并保持其格式?
- salt-stack - SaltStack:仅包含文件的一种状态
- python - 检测元素是否在python列表中的两个相等元素之间
- javascript - 如何在 JavaScript 中将文本转换为语音音频到音频数据数组
- ruby - 在 Rspec 测试中设置控制器参数
- javascript - 如何禁用 Highcharts 纵坐标中的“k”显示?
- oracle - 从 Oracle 中的两个公用表中获取剩余行