The following packages are required to work with ESMPy:
The following packages are optional:
mpi4py- python bindings to MPI, needed to run some of the parallel regridding examples
pytest - for testing
Getting the code¶
The ESMPy source code can be downloaded from the ESMF git repository.
The ESMF User’s Guide contains information on building and installing esmpy.
The ESMF Reference Manual contains information on the architecture of ESMF, example code, and details of the API (Application Programming Interface).
ESMPy conda packages are available through the conda-forge channel:
conda create -n esmpy -c conda-forge esmpy
Specific versions of the conda package can be installed like this:
conda create -n esmpy -c conda-forge esmpy=8.1.0
Development versions can be found in the
conda create -n esmpy -c conda-forge -c esmpy_dev esmpy
Installing ESMPy from Source¶
When installing from source, ESMPy uses pip
to build and install the package. An installation of ESMPy in the default location for Python packages can be done
with the following command issued from the top level ESMPy directory (
python3 -m pip install .
Please contact firstname.lastname@example.org with any questions.
With some python versions, there is a problem with the automatic installation of the required package
setuptools-git-versioning. If the output from the
pip install command ends with
Successfully installed esmpy-0.0.0, this indicates that the
setuptools-git-versioning package was not invoked and the build thinks you are using ESMF version 0.0.0. This will cause problems when you try to use ESMPy. To solve this problem, simply rerun the above installation command (
python3 -m pip install .). You should then see a reasonable version number at the end, such as,
Successfully installed esmpy-8.4.0.
To use ESMPy in an external program, import it with:
The environment variable
ESMFMKFILE should be set when using ESMPy. If it is not found, the package will
try to guess a few very common locations, but we recommend correctly setting the variable nonetheless.
The Python module name for ESMPy was changed in v8.4.0 from “ESMF” to “esmpy”. If you are using a version older than v8.4.0, the import command is
import ESMF. See the ESMF Release Notes for more details and links to previous versions of the ESMPy documentation.
The ESMPy testing is done with the pytest package, both in serial and
parallel. Basic unit tests can be run with the following command, from
the top level ESMPy directory (
python3 -m pytest
There are a few other pytest targets available for a wider range of testing if greater test coverage is desired:
make test_unit make test_examples make test_unit_parallel make test_examples_parallel make test_regrid_from_file
example tests can take up a lot of memory
and bandwidth. The
commands will simply download the test files without actually running them
(allowing the stress on the machine to be applied to bandwidth first, and
By default, test data will be downloaded to a
data subdirectory of the ESMPy installation directory. This location can be changed by setting one of the following environment variables:
ESMPY_DATA_DIRis set, this should point to a directory that has already been populated with the necessary data; the pre-existing data will be read from this directory and no automatic downloads will be attempted.
ESMPY_DATA_NEW_DIRis set, data will be downloaded to the path set by this variable instead of using the
datasubdirectory of the ESMPy installation directory.
ESMPy doesn’t include many aspects of ESMF, including components, field bundles, time management, etc. The limitations listed here are relative to ESMF offline and integrated regridding capabilities.
ESMPy cannot use an ESMF installation that is built with external LAPACK support.
Gridsupport is limited to cubed-sphere grids created on 6 processors. A cubed-sphere grid can be created on any number of processors, but only when it is created on 6 processors will the coordinates be retrievable for the entire object. A
Fieldcreated from a cubed-sphere
Gridcannot be written to file in parallel.
There is no
FieldBundleclass, only single
Nightly regression testing is limited to a small subset of the ESMF test platforms, including Darwin and Linux running gfortran with openMPI.