brightway2.5中的Temporalis库AttributeError:'NoneType'对象没有属性'get'

问题描述 投票:0回答:1

我从终端下载了temporalis库到brightway。在安装过程中,它发出警告,指出并非所有软件包都可以安装。错误如下:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed.(https://i.stack.imgur.com/wtVhl.png)his behavior is the source of the following dependency conflicts.
brightway2 2.4.2 requires bw2calc==1.8.1, but you have bw2calc 2.0.dev16 which is incompatible.
brightway2 2.4.2 requires bw2data<3.99, but you have bw2data 4.0.dev33 which is incompatible.

这是来自 jupyter-lab 的错误代码的屏幕截图

code 1

code 2

但是由于 Temporalis 有效,我尝试使用以下链接中的代码来获取我的项目的结果

https://github.com/brightway-lca/from-the-ground-up/blob/main/temporal/1%20-%20Introduction.ipynb

在github上,但是我得到的第一个错误说brightway2.5与Temporalis兼容,所以我在anaconda上安装了新的brightway2.5的环境并再次尝试。然后jupyter-lab建议我在另一个错误中迁移项目,我也应用了它,但我仍然在第10行中收到这样的错误。你知道为什么以及如何解决这个问题吗?任何帮助将不胜感激。

**我的电脑:** MacBook Pro 2017 - 2.3 GHz 双核 Intel Core i5、Intel Iris Plus Graphics 640 1536 MB、16 GB 2133 MHz LPDDR3、macOS 13.6.1 (22G313)。

[1] from bw_temporalis import easy_timedelta_distribution, easy_datetime_distribution, TemporalisLCA, Timeline, TemporalDistribution
from bw_temporalis.lcia import characterize_methane, characterize_co2
from bw2data import *
import bw2data as bd
import bw2io as bi
import bw2calc as bc
import bw_temporalis as bwt
import bw_graph_tools as graph
import numpy as np
import pandas as pd

[2] projects.set_current('bw2.5')

[3] projects.migrate_project_25

[4] bd.Database('thesis  0.1')

[5] ei = bd.Database("thesis  0.1")

[6] activity_name = 'copy_Köck building'

[7] my_activity = [x for x in ei if x['name'] == activity_name][0]

[8] my_activity['temporal distribution'] = bwt.easy_timedelta_distribution(
      start=0,
      end=10,
      resolution="Y",
      steps=11,
    )

[9] temporal_distribution: easy_timedelta_distribution(
                    start=0,
                    end=100, # Range includes both start and end
                    resolution="Y",  # M for months, Y for years, etc.
                    steps=10)

[10] lca = bc.LCA({my_activity: 1}, ("EF  v3.0", "climate change", "global warming potential (GWP100)"))
lca.lci()
lca.lcia()

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[11], line 1
----> 1 lca = bc.LCA({my_activity: 1}, ("EF  v3.0", "climate change", "global warming potential (GWP100)"))
      2 lca.lci()
      3 lca.lcia()

File ~/anaconda3/envs/bw25.1/lib/python3.11/site-packages/bw2calc/lca.py:97, in LCA.__init__(self, demand, method, weighting, normalization, data_objs, remapping_dicts, log_config, seed_override, use_arrays, use_distributions, selective_use)
     95 if data_objs is None:
     96     self.ensure_bw2data_available()
---> 97     demand, self.packages, remapping_dicts = prepare_lca_inputs(
     98         demand=demand,
     99         method=method,
    100         weighting=weighting,
    101         normalization=normalization,
    102     )
    103     self.method = method
    104     self.weighting = weighting

File ~/anaconda3/envs/bw25.1/lib/python3.11/site-packages/bw2data/compat.py:69, in prepare_lca_inputs(demand, method, weighting, normalization, demands, remapping, demand_database_last)
     59 def prepare_lca_inputs(
     60     demand=None,
     61     method=None,
   (...)
     66     demand_database_last=True,
     67 ):
     68     """Prepare LCA input arguments in Brightway 2.5 style."""
---> 69     if not projects.dataset.data.get("25"):
     70         raise Brightway2Project(
     71             "Please use `projects.migrate_project_25` before calculating using Brightway 2.5"
     72         )
     74     databases.clean()

AttributeError: 'NoneType' object has no attribute 'get'

[11] lca.score

[12] tlca = TemporalisLCA(lca)
attributeerror temporal brightway non-type
1个回答
0
投票

您需要运行该函数:)

不是:

[3] projects.migrate_project_25

但是:

[3] projects.migrate_project_25()

如果这不起作用,您应该创建一个新项目并导入数据。

由于您使用的是 2.5,所以不要这样做:

[6] activity_name = 'copy_Köck building'

[7] my_activity = [x for x in ei if x['name'] == activity_name][0]

但是:

my_activity = bd.get_node(database="thesis  0.1", name='copy_Köck building')
© www.soinside.com 2019 - 2024. All rights reserved.