ecoinvent 3.5导入错误:MaybeEncodingError:

时间:2019-02-19 15:37:05

标签: python multiprocessing pickle brightway

我正尝试使用Brightway将ecoinvent 3.5临界值导入一个项目,并具有以下内容:

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有关,而是多处理或泡菜?我不明白错误消息的含义。

---------------------------------------------------------------------------
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")'```


1 个答案:

答案 0 :(得分:1)

Use可以使用use_mp=False来了解实际的错误是什么(而不是该错误不是可腌制的,这会引发一个单独的错误)。在这种情况下,我认为您的数据文件夹有问题,您可以通过删除数据文件夹并再次下载或解压缩来解决。