Ошибка импорта ecoinvent 3.5: MaybeEncodingError: - PullRequest
0 голосов
/ 19 февраля 2019

Я пытался импортировать отсечку ecoinvent 3.5 в проект с использованием 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, а скорее в многопроцессорности или засолке?Я не понимаю, что означает сообщение об ошибке.

---------------------------------------------------------------------------
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 голосов
/ 20 февраля 2019

Использование может использовать use_mp=False, чтобы получить представление о том, что является действительной ошибкой (вместо ошибки, не допускающей засоления, и это вызывает отдельную ошибку).В этом случае я думаю, что у вас есть проблема с папкой данных, которую вы можете решить, удалив ее и загрузив или распаковав заново.

...