首页 > 解决方案 > “pvlib”模块中缺少“逆变器”属性?

问题描述

我最近下载了 Anaconda Distribution 2.0.4 和 PVLIB 0.81,用于 Spyder 4.2.5。我尝试运行 Intro Tutorial ( https://pvlib-python.readthedocs.io/en/stable/introtutorial.html# ) 中的程序代码示例,但在调用pvlib.inverter.sandia()的那一行,我得到错误:

AttributeError:模块“pvlib”没有属性“逆变器”

我使用了dir命令并且缺少提到的属性。尝试通过两种方式安装 PVLIB:

conda install -c pvlib pvlib

conda create -n pvlib -c conda-forge pvlib-python;conda 激活 pvlib

然而错误仍然存​​在。会不会是从最新版本的 PVLIB 中删除了该属性?在这种情况下,对于当前版本的 PVLIB,替代结构是什么?


import matplotlib.pyplot as plt

naive_times = pd.date_range(start='2015', end='2016', freq='1h')



coordinates = [(30, -110, 'Tucson', 700, 'Etc/GMT+7'),
               (35, -105, 'Albuquerque', 1500, 'Etc/GMT+7'),
               (40, -120, 'San Francisco', 10, 'Etc/GMT+8'),
               (50, 10, 'Berlin', 34, 'Etc/GMT-1')]


import pvlib


sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod')

sapm_inverters = pvlib.pvsystem.retrieve_sam('cecinverter')

module = sandia_modules['Canadian_Solar_CS5P_220M___2009_']

inverter = sapm_inverters['ABB__MICRO_0_25_I_OUTD_US_208__208V_']

temperature_model_parameters = pvlib.temperature.TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass']


temp_air = 20

wind_speed = 0

system = {'module': module, 'inverter': inverter,
          'surface_azimuth': 180}


energies = {}

for latitude, longitude, name, altitude, timezone in coordinates:
    times = naive_times.tz_localize(timezone)
    system['surface_tilt'] = latitude
    solpos = pvlib.solarposition.get_solarposition(times, latitude, longitude)
    dni_extra = pvlib.irradiance.get_extra_radiation(times)
    airmass = pvlib.atmosphere.get_relative_airmass(solpos['apparent_zenith'])
    pressure = pvlib.atmosphere.alt2pres(altitude)
    am_abs = pvlib.atmosphere.get_absolute_airmass(airmass, pressure)
    tl = pvlib.clearsky.lookup_linke_turbidity(times, latitude, longitude)
    cs = pvlib.clearsky.ineichen(solpos['apparent_zenith'], am_abs, tl,
                                 dni_extra=dni_extra, altitude=altitude)
    aoi = pvlib.irradiance.aoi(system['surface_tilt'], system['surface_azimuth'],
                               solpos['apparent_zenith'], solpos['azimuth'])
    total_irrad = pvlib.irradiance.get_total_irradiance(system['surface_tilt'],
                                                        system['surface_azimuth'],
                                                        solpos['apparent_zenith'],
                                                        solpos['azimuth'],
                                                        cs['dni'], cs['ghi'], cs['dhi'],
                                                        dni_extra=dni_extra,
                                                        model='haydavies')
    tcell = pvlib.temperature.sapm_cell(total_irrad['poa_global'],
                                        temp_air, wind_speed,
                                        **temperature_model_parameters)
    effective_irradiance = pvlib.pvsystem.sapm_effective_irradiance(
        total_irrad['poa_direct'], total_irrad['poa_diffuse'],
        am_abs, aoi, module)
    dc = pvlib.pvsystem.sapm(effective_irradiance, tcell, module)
    ac = pvlib.inverter.sandia(dc['v_mp'], dc['p_mp'], inverter)
    annual_energy = ac.sum()
    energies[name] = annual_energy


energies = pd.Series(energies)


print(energies.round(0))






energies.plot(kind='bar', rot=0)


plt.ylabel('Yearly energy yield (W hr)')

标签: pythongithubattributeerrorpvlib

解决方案


会不会是从最新版本的 PVLIB 中删除了该属性?

不,逆变器模块仍然是 pvlib 的一部分,您可以在 GitHub 上的pvlib.inverter.sandia()文档和源代码中看到pvlib/inverter.py

您在上面粘贴的代码片段在此Colaboratory notebook中运行。对不起,我只能猜测可能是什么问题。我发现有时会有所帮助的是从一个全新的、干净的新虚拟或 conda 环境开始,安装 pvlib 和Jupyter,然后尝试从新的 Jupyter 笔记本执行此代码片段。如果您仍有问题,请将 Jupyter 笔记本上传到GitHub Gist并在此处粘贴指向它的链接。


推荐阅读