Прежде всего, я довольно новичок в bw2 и LCA в целом, поэтому, пожалуйста, поймите.
В настоящее время я работаю над инструментом, который экспортирует обмены по экоинвентам в Excel-лист. На листе Excel я хотел бы изменить суммы и добавить новые или удалить обмены. После этого я планировал использовать этот лист Excel в качестве базы данных для LCA.
У меня есть два вопроса:
1) На данный момент у меня есть лист Excel с заданием и его обмены готовы загрузить в блокнот Jupyter. Я использовал структуру "excel_importer_example" из Maxkoslowski "Brightway2_Intro". Это работает нормально, пока я не буду использовать ".write_database ()". Как-то не получится. Я получаю сообщение об ошибке, которое мне совсем не помогает:
*InvalidExchange Traceback (most recent call last)
<ipython-input-149-0d0d7c5cd566> in <module>
----> 1 imp.write_database() #hier das Problem: Database wird nicht gespeichert, obwohl Datei in Zeile drüber gefunden wird
~\Miniconda3\envs\tomaten\lib\site-packages\bw2io\importers\excel.py in write_database(self, **kwargs)
257 """Same as base ``write_database`` method, but ``activate_parameters`` is True by default."""
258 kwargs['activate_parameters'] = kwargs.get('activate_parameters', True)
--> 259 super(ExcelImporter, self).write_database(**kwargs)
260
261 def get_activity(self, sn, ws):
~\Miniconda3\envs\tomaten\lib\site-packages\bw2io\importers\base_lci.py in write_database(self, data, delete_existing, backend, activate_parameters, **kwargs)
238
239 existing.update(data)
--> 240 db.write(existing)
241
242 if activate_parameters:
~\Miniconda3\envs\tomaten\lib\site-packages\wrapt\wrappers.py in __call__(self, *args, **kwargs)
604 return self._self_wrapper(wrapped, instance, args, kwargs)
605
--> 606 return self._self_wrapper(self.__wrapped__, self._self_instance,
607 args, kwargs)
608
~\Miniconda3\envs\tomaten\lib\site-packages\bw2data\project.py in writable_project(wrapped, instance, args, kwargs)
354 if projects.read_only:
355 raise ReadOnlyProject(READ_ONLY_PROJECT)
--> 356 return wrapped(*args, **kwargs)
~\Miniconda3\envs\tomaten\lib\site-packages\bw2data\backends\peewee\database.py in write(self, data, process)
258 if data:
259 try:
--> 260 self._efficient_write_many_data(data)
261 except:
262 # Purge all data from database, then reraise
~\Miniconda3\envs\tomaten\lib\site-packages\bw2data\backends\peewee\database.py in _efficient_write_many_data(self, data, indices)
202
203 for index, (key, ds) in enumerate(data.items()):
--> 204 exchanges, activities = self._efficient_write_dataset(
205 index, key, ds, exchanges, activities
206 )
~\Miniconda3\envs\tomaten\lib\site-packages\bw2data\backends\peewee\database.py in _efficient_write_dataset(self, index, key, ds, exchanges, activities)
154 for exchange in ds.get('exchanges', []):
155 if 'input' not in exchange or 'amount' not in exchange:
--> 156 raise InvalidExchange
157 if 'type' not in exchange:
158 raise UntypedExchange
InvalidExchange:
Кто-нибудь знает, в чем может быть проблема?
2) Возможно ли, что мой план сработает? Следующая проблема, о которой я читал, заключается в том, что несвязанные обмены, похоже, представляют собой большую проблему, и все мои сообщения не связаны.
Заранее спасибо!