diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index c1b028104c..eb58781591 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -73,6 +73,7 @@ (define-module (gnu packages geo)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages datastructures)
+  #:use-module (gnu packages digest)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
@@ -1428,6 +1429,74 @@ (define-public python-cf-units
  Climate and Forecast (CF) metadata conventions.")
     (license license:lgpl3+)))
 
+(define-public python-scitools-iris
+  (package
+    (name "python-scitools-iris")
+    (version "3.6.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "scitools-iris" version))
+              (sha256
+               (base32
+                "08r13aans17qgv93m0hwzwmiqvbgkn5rhp9r5szyv4i99xz62igj"))))
+    (build-system pyproject-build-system)
+    (arguments
+     ;; Tests below fail because of URL open errors and missing data (which is
+     ;; probably being downloaded).
+     (list #:test-flags
+           #~(list "--ignore" "lib/iris/tests/test_cf.py"
+                   "--ignore" "lib/iris/tests/integration/netcdf/test_delayed_save.py"
+                   "--ignore" "lib/iris/tests/integration/netcdf/test_thread_safety.py"
+                   "--ignore" "lib/iris/tests/integration/plot/test_vector_plots.py"
+                   "--ignore" "lib/iris/tests/unit/analysis/regrid/test__CurvilinearRegridder.py"
+                   "-k" (string-append "not test_python_versions"
+                                       " and not test_2d_coords_contour"
+                                       " and not test_grouped_dim"
+                                       " and not test_ungrouped_dim"))
+           #:phases #~(modify-phases %standard-phases
+                        (add-before 'check 'build-std-names
+                          (lambda _
+                            ;; Need to build lib/iris/std_names.py before
+                            ;; running the tests.
+                            (invoke "python" "setup.py" "std_names")
+                            ;; Replace some executable paths.
+                            (let ((nc #$(this-package-native-input "netcdf")))
+                              (substitute* "lib/iris/tests/stock/netcdf.py"
+                                (("env_bin_path\\(\"ncgen\"\\)")
+                                 (format #f "\"~a/bin/ncgen\"" nc)))
+                              (substitute* "lib/iris/tests/__init__.py"
+                                (("env_bin_path\\(\"ncdump\"\\)")
+                                 (format #f "\"~a/bin/ncdump\"" nc))))))
+                        ;; To avoid the antlr4 error from cf-units.
+                        (delete 'sanity-check))))
+    (native-inputs (list netcdf
+                         python-click
+                         python-filelock
+                         python-imagehash
+                         python-pytest
+                         python-setuptools-scm
+                         python-wheel))
+    (propagated-inputs (list python-cartopy
+                             python-cf-units
+                             python-cftime
+                             python-dask
+                             python-distributed
+                             python-matplotlib
+                             python-netcdf4
+                             python-numpy
+                             python-pyproj
+                             python-scipy
+                             python-shapely
+                             python-xxhash))
+    (home-page "https://github.com/SciTools/iris")
+    (synopsis "Library for analysing and visualising Earth science data")
+    (description
+     "Iris is a Python library for analysing and visualising Earth
++science data.  It excels when working with multi-dimensional Earth Science
++data, where tabular representations become unwieldy and inefficient.  Iris
++implements a data model based on the CF conventions.")
+    (license license:lgpl3+)))
+
 (define-public tegola
   (package
     (name "tegola")
