使用以下包版本:
bw2data 4.0.dev18
bw2io 0.9.dev10
以下代码:
import bw2io as bi
ebhyb3 = bi.Exiobase3HybridImporter(dirpath_ebhyb3, db_name='EXIOBASE 3.3.17 hybrid')
输出以下错误:
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
c:UsersdfontCONSTRUCIA S.LLCSA - GeneralCodetest.py in line 1
----> 210 ebhyb3 = bi.Exiobase3HybridImporter(dirpath_ebhyb3, db_name='EXIOBASE 3.3.17 hybrid')
File c:UsersdfontAnaconda3envsbw25Libsite-packagesbw2ioimportersexiobase3_hybrid.py:26, in Exiobase3HybridImporter.__init__(self, dirpath, db_name)
23 self.dirpath = Path(dirpath)
24 self.db_name = db_name
---> 26 activities = mrio_common_metadata.get_metadata_resource(
27 self.dirpath, "activities"
28 )
29 products = mrio_common_metadata.get_metadata_resource(self.dirpath, "products")
31 product_to_activities = {i["id"]: j["id"] for i, j in zip(products, activities)}
File c:UsersdfontAnaconda3envsbw25Libsite-packagesmrio_common_metadata__init__.py:40, in get_metadata_resource(dirpath, resource_name)
39 def get_metadata_resource(dirpath, resource_name):
---> 40 resource = _get_resource(dirpath, resource_name)
41 names = [f["name"] for f in resource["schema"]["fields"]]
42 data = load_compressed_csv(Path(dirpath) / resource["path"])
File c:UsersdfontAnaconda3envsbw25Libsite-packagesmrio_common_metadata__init__.py:22, in _get_resource(dirpath, resource_name)
21 def _get_resource(dirpath, resource_name):
---> 22 resources = _get_resources(dirpath)
23 assert len([r for r in resources if r["name"] == resource_name]) == 1
24 return next(r for r in resources if r["name"] == resource_name)
...
11 dirpath = Path(dirpath)
---> 12 assert (dirpath / "datapackage.json").is_file()
13 return dirpath
AssertionError:
根据https://presamples.readthedocs.io/_/downloads/en/stable/pdf/:
datapackage.json: A JSON file following the datpackage standard with the metadata for these presamples. This is the only file that is required for a presample directory.
这个JSON应该包含什么信息,它是否在某处可用?
您需要首先使用这里的代码将exiobase (hybrid units) version 3.3.17转换为导入器所期望的格式。然后您可以运行导入器。
from bw2io.importers.exiobase3_hybrid import Exiobase3HybridImporter
ei = Exiobase3HybridImporter(path_to_exiobase)