Hi everyone,
I'm running weewx v5.1.0 and recently installed the windy extension from Matthew Wall's weewx-windy github but I'm getting a ModuleNotFoundError: No module named 'distutils' error message when weewx attempts to start. I've logged an issue in the github for this project but it appears that the extension might be stale since there hasn't been an update for 5 years. Would anyone know of a workaround I could use to get this extension working or is there an alternative extension I could use for
windy.com?
Thanks,
John
---
syslog:
2025-10-13T22:45:28.785720+00:00 weewx weewxd[2702]: INFO user.interceptor: shutting down server thread
2025-10-13T22:45:29.218019+00:00 weewx weewxd[2702]: CRITICAL __main__: Caught unrecoverable exception:
2025-10-13T22:45:29.218246+00:00 weewx weewxd[2702]: CRITICAL __main__: **** No module named 'distutils'
2025-10-13T22:45:29.221213+00:00 weewx weewxd[2702]: CRITICAL __main__: **** Traceback (most recent call last):
2025-10-13T22:45:29.221525+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "/usr/share/weewx/weewxd.py", line 121, in main
2025-10-13T22:45:29.221742+00:00 weewx weewxd[2702]: CRITICAL __main__: **** engine = weewx.engine.StdEngine(config_dict)
2025-10-13T22:45:29.223622+00:00 weewx weewxd[2702]: CRITICAL __main__: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-13T22:45:29.223741+00:00 weewx weewxd[2702]: Traceback (most recent call last):
2025-10-13T22:45:29.224034+00:00 weewx weewxd[2702]: File "/usr/share/weewx/weewxd.py", line 226, in <module>
2025-10-13T22:45:29.224090+00:00 weewx weewxd[2702]: main()
2025-10-13T22:45:29.224130+00:00 weewx weewxd[2702]: File "/usr/share/weewx/weewxd.py", line 121, in main
2025-10-13T22:45:29.224178+00:00 weewx weewxd[2702]: engine = weewx.engine.StdEngine(config_dict)
2025-10-13T22:45:29.224222+00:00 weewx weewxd[2702]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-13T22:45:29.224262+00:00 weewx weewxd[2702]: File "/usr/share/weewx/weewx/engine.py", line 89, in __init__
2025-10-13T22:45:29.224300+00:00 weewx weewxd[2702]: self.loadServices(config_dict)
2025-10-13T22:45:29.224337+00:00 weewx weewxd[2702]: File "/usr/share/weewx/weewx/engine.py", line 157, in loadServices
2025-10-13T22:45:29.224378+00:00 weewx weewxd[2702]: obj = weeutil.weeutil.get_object(svc)(self, config_dict)
2025-10-13T22:45:29.224423+00:00 weewx weewxd[2702]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-13T22:45:29.224463+00:00 weewx weewxd[2702]: File "/usr/share/weewx/weeutil/weeutil.py", line 1404, in get_object
2025-10-13T22:45:29.224541+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "/usr/share/weewx/weewx/engine.py", line 89, in __init__
2025-10-13T22:45:29.224618+00:00 weewx weewxd[2702]: module = importlib.import_module(module_name)
2025-10-13T22:45:29.224954+00:00 weewx weewxd[2702]: CRITICAL __main__: **** self.loadServices(config_dict)
2025-10-13T22:45:29.225097+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "/usr/share/weewx/weewx/engine.py", line 157, in loadServices
2025-10-13T22:45:29.225188+00:00 weewx weewxd[2702]: CRITICAL __main__: **** obj = weeutil.weeutil.get_object(svc)(self, config_dict)
2025-10-13T22:45:29.227728+00:00 weewx weewxd[2702]: CRITICAL __main__: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-13T22:45:29.227815+00:00 weewx weewxd[2702]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-13T22:45:29.227918+00:00 weewx weewxd[2702]: File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
2025-10-13T22:45:29.227976+00:00 weewx weewxd[2702]: return _bootstrap._gcd_import(name[level:], package, level)
2025-10-13T22:45:29.228028+00:00 weewx weewxd[2702]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-13T22:45:29.228070+00:00 weewx weewxd[2702]: File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
2025-10-13T22:45:29.228115+00:00 weewx weewxd[2702]: File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
2025-10-13T22:45:29.228156+00:00 weewx weewxd[2702]: File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
2025-10-13T22:45:29.228194+00:00 weewx weewxd[2702]: File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
2025-10-13T22:45:29.228236+00:00 weewx weewxd[2702]: File "<frozen importlib._bootstrap_external>", line 995, in exec_module
2025-10-13T22:45:29.228280+00:00 weewx weewxd[2702]: File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
2025-10-13T22:45:29.228328+00:00 weewx weewxd[2702]: File "/etc/weewx/bin/user/windy.py", line 46, in <module>
2025-10-13T22:45:29.228371+00:00 weewx weewxd[2702]: from distutils.version import StrictVersion
2025-10-13T22:45:29.228409+00:00 weewx weewxd[2702]: ModuleNotFoundError: No module named 'distutils'
2025-10-13T22:45:29.228466+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "/usr/share/weewx/weeutil/weeutil.py", line 1404, in get_object
2025-10-13T22:45:29.228517+00:00 weewx weewxd[2702]: CRITICAL __main__: **** module = importlib.import_module(module_name)
2025-10-13T22:45:29.228584+00:00 weewx weewxd[2702]: CRITICAL __main__: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-13T22:45:29.228629+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
2025-10-13T22:45:29.228683+00:00 weewx weewxd[2702]: CRITICAL __main__: **** return _bootstrap._gcd_import(name[level:], package, level)
2025-10-13T22:45:29.228738+00:00 weewx weewxd[2702]: CRITICAL __main__: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-13T22:45:29.228789+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
2025-10-13T22:45:29.228834+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
2025-10-13T22:45:29.228878+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
2025-10-13T22:45:29.228922+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
2025-10-13T22:45:29.228964+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "<frozen importlib._bootstrap_external>", line 995, in exec_module
2025-10-13T22:45:29.229007+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
2025-10-13T22:45:29.229045+00:00 weewx weewxd[2702]: CRITICAL __main__: **** File "/etc/weewx/bin/user/windy.py", line 46, in <module>
2025-10-13T22:45:29.229087+00:00 weewx weewxd[2702]: CRITICAL __main__: **** from distutils.version import StrictVersion
2025-10-13T22:45:29.229150+00:00 weewx weewxd[2702]: CRITICAL __main__: **** ModuleNotFoundError: No module named 'distutils'
2025-10-13T22:45:29.229195+00:00 weewx weewxd[2702]: CRITICAL __main__: **** Exiting.
2025-10-13T22:45:29.263650+00:00 weewx systemd[1]: weewx.service: Main process exited, code=exited, status=1/FAILURE
2025-10-13T22:45:29.264708+00:00 weewx systemd[1]: weewx.service: Failed with result 'exit-code'.