pydap
A pure python implementation of the Data Access Protocol.
What it is and what it does
pydap is a pure-Python implementation of the OPeNDAP (Data Access Protocol) standard, originally developed in the 2000s and maintained by the OPeNDAP community. It operates in two modes: as a client to fetch remote scientific data from OPeNDAP servers, and as a lightweight WSGI-based server to publish local datasets. The client uses lazy evaluation and remote metadata (DMR for DAP4) to let you inspect and access only the data you need, avoiding full downloads of large remote arrays.
The package is built on a foundation of common scientific Python libraries (numpy, scipy, requests) and web tools (webob, Jinja2, beautifulsoup4, lxml). It is widely used as a backend engine for xarray and is recognized as a stable, long-lived project in the scientific Python ecosystem. The server mode supports pluggable data handlers (e.g., netCDF4) and can be deployed standalone or behind Apache, making it suitable for publishing scientific datasets over HTTP.
Use it for:
- Access large remote climate or oceanographic datasets from public OPeNDAP servers without downloading entire files locally.
- Query specific variables and dimensions from remote scientific data sources, fetching only what you need on demand.
- Set up a lightweight OPeNDAP server to publish local netCDF or other scientific data files over HTTP for remote access.
- Integrate remote data access into xarray workflows, leveraging pydap as the backend protocol handler.
- Build data pipelines that combine lazy-loaded remote arrays with local numpy and scipy operations.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
pydap is a pure-Python OPeNDAP client and server that lets you access remote scientific datasets on-the-fly without downloading them in full, using lazy evaluation to fetch only the data you request.
Yes. pydap is a mature, actively maintained project (Production/Stable, last release 49 days ago) with no known vulnerabilities, low install friction, and a permissive MIT license. It fills a specific and well-defined role in scientific Python: OPeNDAP protocol support for remote data access. Install it if you need to work with OPeNDAP servers or publish scientific data over HTTP; skip it if you don't use OPeNDAP or remote lazy-loaded data.
Install
pydap on PyPI
pip
pip install pydapuv
uv add pydappoetry
poetry add pydapInstalling pydap
Before you install
Low friction install with a pure-wheel distribution. Active maintenance (last release 49 days ago) and marked Production/Stable. Requires Python 3.12 or later. Eight runtime dependencies (numpy, requests, scipy, webob, beautifulsoup4, lxml, Jinja2, requests-cache) are all common and well-maintained.
License in practice
MIT license (permissive). You can use, modify, and distribute pydap freely in commercial and private projects with minimal restrictions—only attribution and inclusion of the license text are required.
Quickstart
pip install pydap
from pydap.client import open_url
pyds = open_url('http://test.opendap.org:8080/opendap/catalog/ghrsst/20210102090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc', protocol='dap4')
print(pyds['sst_anomaly'].shape)
Requires Python 3.12 or later. Remote OPeNDAP server must be accessible over HTTP.
Verify before relying
- Whether pydap's lazy evaluation performance scales well with very large remote datasets or high-frequency access patterns.
- Current state of xarray integration and whether it remains a primary backend for that project.
- Compatibility and performance with modern OPeNDAP server implementations beyond the test server examples.
Package facts
| License | The MIT License Copyright (c) 2003-2010 Roberto De Almeida Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.12) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 8 — numpy, requests, requests-cache, scipy, webob, beautifulsoup4, lxml, Jinja2 |
| Maintenance | actively maintained — 49 days since the last release |
| First released | |
| Downloads | 635,787/month — #5,634 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pydap-3.5.10-py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
h5netcdfh5netcdf reads and writes netCDF4 files using…
permissive · top 5,000 on PyPI
odc-stacConverts STAC (SpatialTemporal Asset Catalog)…
unclear · top 15,000 on PyPI
wsgidavWsgiDAV is a WebDAV server implementation in…
permissive · top 15,000 on PyPI
odc-loaderConstructs xarray objects from parsed…
permissive · top 15,000 on PyPI
netCDF4netcdf4 provides a Python interface to read,…
permissive · top 5,000 on PyPI
datasetdataset simplifies reading and writing data to…
permissive · top 5,000 on PyPI
kerchunkKerchunk extracts metadata from chunked,…
permissive · top 15,000 on PyPI
copernicusmarineCopernicusmarine provides a CLI and Python API…
unclear · top 15,000 on PyPI
remotezip2Reads and extracts files from ZIP archives…
permissive · top 15,000 on PyPI
ipydatawidgetsipydatawidgets provides Jupyter widgets for…
permissive · top 15,000 on PyPI