Known Issues#
Besides the officially listed issues on the wetterdienst repository, there are other issues regarding running wetterdienst listed below that may be environment specific and are not likely fixable on our side.
Cache runs stale#
Also we are quite happy with our FSSPEC backed caching system from time to time you may run into some unexplainable error with empty result sets like here and in this case it is worth try dropping the cache entirely.
Running this
import wetterdienst
wetterdienst.info()
will guide you the path to your caching folder.
SSL Certificate Verification Issues#
If you encounter SSL certificate verification errors, especially in corporate environments with custom certificates or when your system certificates are outdated, you may see errors like:
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]Connection failures when downloading data
You can resolve this by enabling the certifi certificate bundle:
from wetterdienst import Settings
settings = Settings(use_certifi=True)
# Use this settings object with your requests
Or via environment variable:
export WD_USE_CERTIFI=true
This uses Mozilla’s curated collection of root certificates instead of your system certificates. For more information, see the settings documentation.
Crash at exit with ecCodes and pyproj on Linux#
On Linux, installing eccodes (from the bufr or eccodes extra) with pip, uv pip or another
installer that reads its wheel’s dependencies pulls in the eccodeslib and eckitlib wheels, and
eckitlib bundles its own copy of PROJ. A process that loads eccodes and then imports pyproj
(which the radarplus extra brings, as do geopandas or cartopy) crashes at interpreter exit with
double free or corruption, free(): invalid pointer or a segmentation fault, exit status 134 or
139. Files your code wrote and closed are complete, but the exit status fails scripts and CI jobs.
This is the upstream bug ecmwf/eckit#354, see also
#2441.
wetterdienst imports pyproj, where it is installed, before it loads eccodes for DWD road and
radar BUFR, so its own reads do not set this off. Code that imports eccodes before wetterdienst
does, itself or through a library such as pdbufr or cfgrib, still can:
python -c "import eccodes; import pyproj"; echo $? # 134
python -c "import pyproj; import eccodes"; echo $? # 0
Import pyproj first. Where you cannot, install your distribution’s ecCodes library and set
FINDLIBS_DISABLE_PACKAGE=yes for the command that runs your code, so that findlibs loads that
library instead of the eccodeslib wheel’s (on Debian 13,
sudo apt-get install libeccodes0 libeccodes-data). Both are needed: with the variable and no
system library, eccodes does not load at all. The variable applies to every library findlibs
looks up, so another package that relies on it to find a library in its wheel no longer finds it:
scope it to the one command, as in FINDLIBS_DISABLE_PACKAGE=yes python my_script.py.
Only installs with the eckitlib wheel are affected: where
python -c "import importlib.metadata as m; print(m.version('eckitlib'))" raises
PackageNotFoundError, yours is not. The Docker image does not install it.
Raspberry Pi / Linux ARM#
On a Raspberry Pi, numpy and lxml have to be in place before wetterdienst is installed:
# not all of these may be required to get lxml running
sudo apt-get install gfortran
sudo apt-get install libopenblas-base
sudo apt-get install libopenblas-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install python3-lxml
Expanding the swap to 2048 MB may be required as well, via the swap file:
sudo nano /etc/dphys-swapfile
Thanks chr-sto for reporting back to us!