Version 3.0.0 for version 1.7 of the CF conventions.

Operating systems

cf works only for Linux and Mac operating systems.

Python versions

cf works only for Python 3.5 or later. (Versions 2.x of cf work only for Python 2.7.)


cf-python is in the ncas conda channel. To install cf with all of its required and optional dependencies, and the cf-plot visualisation package, run

Install with conda.
conda install -c ncas -c conda-forge cf-python cf-plot udunits2
conda install -c conda-forge mpich esmpy

The second of the two conda commands is required for regridding to work.


cf-python is in the Python package index:

To install cf and all of its required dependencies run, for example:

Install as root, with any missing dependencies.
pip install cf-python
Install as a user, with any missing dependencies.
pip install cf-python --user

To install cf without any of its dependencies then run, for example:

Install as root without installing any of the dependencies.
pip install cf-python --no-deps

See the documentation for pip install for further options.

The optional dependencies are not automatically installed via pip.


To install from source:

  1. Download the cf-python package from

  2. Unpack the library (replacing <version> with the version that you want to install, e.g. 3.0.0):

    tar zxvf cf-python-<version>.tar.gz
    cd cf-python-<version>
  3. Install the package:

  • To install the cf-python package to a central location:

    python install
  • To install the cf-python package locally to the user in the default location:

    python install --user
  • To install the cf-python package in the <directory> of your choice:

    python install --home=<directory>


Tests are run from within the cf-python/test directory:




  • Python, version 3 or newer.

  • numpy, version 1.15 or newer.

  • netCDF4, version 1.4.0 or newer.

  • cftime, version 1.0.2 or newer. (Note that this package is installed with netCDF4.)

  • cfdm, version 1.7.7 or newer.

  • cfunits, version 3.2.2 or newer.

  • psutil, version 0.6.0 or newer.

  • UNIDATA UDUNITS-2 library, version 2.2.20 or newer.

    This is a C library which provides support for units of physical quantities. If the UDUNITS-2 shared library file ( on GNU/Linux or libudunits2.0.dylibfile on MacOS) is in a non-standard location then its path should be added to the LD_LIBRARY_PATH environment variable. It may also be necessary to specify the location of the udunits2.xml file in the UDUNITS2_XML_PATH environment variable (although the default location is usually correct).


Some further dependencies that, enable further functionality, are optional. This to faciliate cf-python being installed in restricted environments:


  • ESMF, version 7.1.0r or newer. This is easily installed via conda with

    conda install -c conda-forge mpich esmpy

    or may be installed from source.

Convolution filters, derivatives and relative vorticity

  • scipy, version 1.3.0 or newer.

Subspacing based on N-d construct cells (N > 1) containing a given value

Parallel processing

Code repository

The complete source code is available at