python - “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)')
解决方案
会不会是从最新版本的 PVLIB 中删除了该属性?
不,逆变器模块仍然是 pvlib 的一部分,您可以在 GitHub 上的pvlib.inverter.sandia()
文档和源代码中看到pvlib/inverter.py
您在上面粘贴的代码片段在此Colaboratory notebook中运行。对不起,我只能猜测可能是什么问题。我发现有时会有所帮助的是从一个全新的、干净的新虚拟或 conda 环境开始,安装 pvlib 和Jupyter,然后尝试从新的 Jupyter 笔记本执行此代码片段。如果您仍有问题,请将 Jupyter 笔记本上传到GitHub Gist并在此处粘贴指向它的链接。
推荐阅读
- directory - 有什么办法可以欺骗 System.DirectoryServices.ActiveDirectory 的值?
- java - 为什么 Java 在 break 语句后不重置内部循环的值?
- ruby-on-rails - 如何在 simple_form_for 中创建具有 2 个嵌套属性和复选框的表
- react-admin - 'GET_LIST' 的响应必须像 { data : [...] },但接收到的数据不是数组
- python - 3D 中 > 100 万个点的散点图
- firebase - 在 Flutter 中首先加载 Firestore 文档
- python - 如何从保存的模型中加载权重
- reactjs - React 中的 onClick 处理程序拾取子节点
- game-engine - IRC 会成为游戏应用交流的良好媒介吗
- c++ - OpenSSL BN_sub() 不能做有符号减法