distutils was deprecated . . . maybe in python 3.12 I think setuptools has a distutils compatibility layer, so you could try installing that with pip.
Good luck and maybe someone wiser will come along On Monday, October 13, 2025 at 8:42:15 PM UTC-5 [email protected] wrote: > 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'. -- You received this message because you are subscribed to the Google Groups "weewx-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/weewx-user/755a40b8-9198-497c-89f4-f3cf0197b9c9n%40googlegroups.com.
