By executing the current environment.yml and create a conda environment, the version of esmvaltool being installed is 2.4.0. However, this will cause an error when calling the ewatercycle.forcing (for instance, in a forcing generation notebook):
import ewatercycle.forcing
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/generate_forcing.ipynb Cell 4 line 4
[1](vscode-notebook-cell://wsl%2Bubuntu-20.04/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/generate_forcing.ipynb#W3sdnNjb2RlLXJlbW90ZQ%3D%3D?line=0) import xarray as xr
[2](vscode-notebook-cell://wsl%2Bubuntu-20.04/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/generate_forcing.ipynb#W3sdnNjb2RlLXJlbW90ZQ%3D%3D?line=1) from rich import print
----> [4](vscode-notebook-cell://wsl%2Bubuntu-20.04/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/generate_forcing.ipynb#W3sdnNjb2RlLXJlbW90ZQ%3D%3D?line=3) import ewatercycle.forcing
File [~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:8](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:8)
[4](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:4) from typing import Any, Type
[6](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:6) from importlib_metadata import EntryPoint
----> [8](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:8) from ewatercycle.base.forcing import (
[9](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:9) DefaultForcing,
[10](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:10) GenericDistributedForcing,
[11](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:11) GenericLumpedForcing,
[12](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:12) )
[15](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:15) class ForcingSources(Mapping):
[16](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:16) """Lazy dictionary to hold the different forcing sources.
[17](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:17)
[18](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:18) Properties can be accessed as attributes (with dot) or as keys (with [name]).
[19](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/forcing.py:19) """
File [~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:37](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:37)
[34](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:34) from pydantic.functional_validators import AfterValidator, model_validator
[35](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:35) from ruamel.yaml import YAML
---> [37](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:37) from ewatercycle.esmvaltool.builder import (
[38](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:38) build_generic_distributed_forcing_recipe,
[39](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:39) build_generic_lumped_forcing_recipe,
[40](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:40) )
[41](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:41) from ewatercycle.esmvaltool.run import run_recipe
[42](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/base/forcing.py:42) from ewatercycle.esmvaltool.schema import Dataset, Recipe
File [~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:10](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:10)
[7](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:7) from typing import Literal, Sequence
[9](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:9) from ewatercycle.esmvaltool.datasets import DATASETS
---> [10](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:10) from ewatercycle.esmvaltool.diagnostic import copier
[11](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:11) from ewatercycle.esmvaltool.schema import (
[12](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:12) ClimateStatistics,
[13](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:13) Dataset,
(...)
[19](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:19) Variable,
[20](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:20) )
[21](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/builder.py:21) from ewatercycle.util import get_extents
File [~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/diagnostic/copier.py:6](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/diagnostic/copier.py:6)
[3](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/ewatercycle/esmvaltool/diagnostic/copier.py:3) import shutil
...
----> [4](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/esmvalcore/preprocessor/_regrid_esmpy.py:4) import ESMF
[5](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/esmvalcore/preprocessor/_regrid_esmpy.py:5) import iris
[6](https://vscode-remote+wsl-002bubuntu-002d20-002e04.vscode-resource.vscode-cdn.net/home/yangliu/eWaterCycle/ewatercycle-lisflood/docs/~/mambaforge/envs/ewatercycle/lib/python3.10/site-packages/esmvalcore/preprocessor/_regrid_esmpy.py:6) import numpy as np
ModuleNotFoundError: No module named 'ESMF'
It is quite likely that the import name is different, so it fails. In the latest version of esmvaltool (e.g. version 2.9.0) everything works fine. However, due to the dependency conflicts (using the current environment.yml) a higher version of esmvaltool can not be installed.
I tried another environment file from infra (many thanks to @BSchilperoort for pointing me to this). And everything works well. I notice that this way the installed version of esmvaltool is 2.9.0. So we should update the environment file based on the one in the infra repo.
By executing the current
environment.yml
and create a conda environment, the version ofesmvaltool
being installed is 2.4.0. However, this will cause an error when calling theewatercycle.forcing
(for instance, in a forcing generation notebook):It is quite likely that the import name is different, so it fails. In the latest version of
esmvaltool
(e.g. version 2.9.0) everything works fine. However, due to the dependency conflicts (using the current environment.yml) a higher version ofesmvaltool
can not be installed.I tried another environment file from infra (many thanks to @BSchilperoort for pointing me to this). And everything works well. I notice that this way the installed version of
esmvaltool
is 2.9.0. So we should update the environment file based on the one in the infra repo.