eccodes
Python interface to the ecCodes GRIB and BUFR decoder/encoder
Decision gist · record as of 2026-08-14
Yes. The package is actively maintained, has low install friction, carries no security vulnerabilities, and is licensed permissively. Install it if you work with GRIB or BUFR files. The only caveat is Windows support is untested—verify compatibility for your specific Windows environment before relying on it in production.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- The ecCodes C library must be available on the system.
- PyPI wheels include it by default on Linux and macOS (via eccodeslib dependency); on Windows, verify the binary is bundled or set ECCODES_PYTHON_USE_FINDLIBS=1 to use an external installation.
- Low friction: pure-wheel installation on PyPI with no compilation required by default.
License · maintenance · safety
Apache License Version 2.0 (permissive) — Licensed under Apache License Version 2.0, a permissive license that allows commercial and private use with minimal restrictions. No notable licensing constraints for most use cases.
last release 2026-04-22 (114 days) · last repo commit 2026-08-11 · 137 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,301,211 downloads/mo, #4,085 on PyPI
Alternatives
Verify before relying
pip install eccodes
import eccodes
# Read a GRIB file
with open('data.grib', 'rb') as f:
msg_id = eccodes.codes_grib_new_from_file(f, eccodes.CODES_PRODUCT_GRIB)
value = eccodes.codes_get(msg_id, 'shortName')
eccodes.codes_release(msg_id)- Whether Windows support has improved since the description notes it as 'untested'
- Performance characteristics of the pure-wheel vs. compiled modes in practice
- Availability and stability of the eccodeslib dependency on all supported platforms
What it is and what it does
eccodes is a Python interface to the ECMWF ecCodes library, which decodes and encodes GRIB and BUFR files—the standard formats for meteorological and oceanographic data. It supports GRIB 1 and 2, BUFR 3 and 4, and works on Linux and macOS with tested support for modern Python versions (3.9–3.14) and PyPy3. The package ships as a pure wheel on PyPI with the ecCodes binary library included, meaning no external compilation is required for installation.
The library offers both low-level and high-level interfaces. The low-level API provides direct access to GRIB and BUFR message fields via key-value lookups, while a newer high-level BUFR interface simplifies common operations. By default, the wheel is twice as slow as a compiled version, but an optional build step using the ecCodes source headers can match native performance. The package uses findlibs to locate system libraries when needed, with environment variables available to control the search path.
Use it for
- Extract meteorological variables (temperature, pressure, wind) from GRIB forecast or analysis files for weather modeling or analysis workflows.
- Convert between GRIB 1 and GRIB 2 formats, or validate GRIB/BUFR file structure and metadata.
- Decode BUFR observation data from weather stations or satellites for quality control or assimilation into data pipelines.
- Build data ingestion tools that read multiple GRIB/BUFR files and extract specific fields for downstream analysis or visualization.
- Integrate meteorological data processing into scientific Python stacks alongside numpy and other analysis libraries.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
The package is actively maintained, has low install friction, carries no security vulnerabilities, and is licensed permissively. Install it if you work with GRIB or BUFR files. The only caveat is Windows support is untested—verify compatibility for your specific Windows environment before relying on it in production.
Install
eccodes on PyPI
Before you install
Low friction: pure-wheel installation on PyPI with no compilation required by default. Maintenance is active with a recent release (114 days ago) and ongoing commits. The package depends on numpy, attrs, cffi, and findlibs—all stable, widely-used libraries.
The ecCodes C library must be available on the system. PyPI wheels include it by default on Linux and macOS (via eccodeslib dependency); on Windows, verify the binary is bundled or set ECCODES_PYTHON_USE_FINDLIBS=1 to use an external installation.
License in practice
Licensed under Apache License Version 2.0, a permissive license that allows commercial and private use with minimal restrictions. No notable licensing constraints for most use cases.
Quickstart
pip install eccodes
import eccodes
# Read a GRIB file
with open('data.grib', 'rb') as f:
msg_id = eccodes.codes_grib_new_from_file(f, eccodes.CODES_PRODUCT_GRIB)
value = eccodes.codes_get(msg_id, 'shortName')
eccodes.codes_release(msg_id)
Verify before relying
- Whether Windows support has improved since the description notes it as 'untested'
- Performance characteristics of the pure-wheel vs. compiled modes in practice
- Availability and stability of the eccodeslib dependency on all supported platforms
Package facts
| License | Apache License Version 2.0 permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 4 packagesnumpyattrscffifindlibs |
| Maintenance | Actively maintained 114 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,301,211 / month, #4,085 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: Apache Software LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPy |
Evidence: eccodes-2.47.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “bufr decoder encoder”
- eccodesReads and writes GRIB and BUFR meteorological data files via Python…
- pdbufrpdbufr reads BUFR (Binary Universal Form for the Representation of…
- eccodeslibeccodeslib provides Python bindings to decode and encode…
Give your agent the search over MCP, or paste the wish link into any chat.
More Information Analysis packages
A drop-in replacement for Python's standard `re` module that adds advanced regex features like nested sets, fuzzy matching, lookaround in conditionals, and full Unicode case-folding while maintaining backward compatibility.
pyarrow provides Python bindings to Apache Arrow's C++ libraries for efficient columnar data processing, serialization, and interoperability with pandas, NumPy, and other Python ecosystem tools.
NetworkX provides data structures and algorithms for creating, analyzing, and manipulating graphs and networks, supporting everything from simple undirected graphs to complex directed and weighted networks.
Connects Python applications to Snowflake data warehouses using the DB API 2.0 specification, enabling SQL queries, data transfers, and warehouse operations.
ContourPy calculates contours of 2D quadrilateral grids using C++11 algorithms wrapped in Python, offering serial and multithreaded implementations without requiring Matplotlib as a dependency.
Snowpark Python provides APIs to query and process data directly in Snowflake without moving data to your local system, with support for both native Snowpark and pandas-compatible interfaces.
Install it if you use Snowflake and want to process data without moving it to your application layer.
See also cfgrib · eccodeslib · pdbufr · pygrib · ecmwf-api-client · ecmwf-opendata · ecmwf-datastores-client · earthkit-meteo · earthkit-data · pyEDFlib