Windows Python ImportError: DLL load failed
This article helps troubleshoot the "DLL load failed while importing" error while attempting to register the agent.
LAST TESTED ON CHECKMK 2.0.0P1
Since Checkmk 2.0, we do provide Python inside the Checkmk Agent (Werk # 10689). If you're using PYTHONHOME or PYTHONPATH, you may run into a similar issue:
C:\Windows\system32>"C:\Program Files (x86)\checkmk\service\check_mk_agent.exe" updater register -v Traceback (most recent call last): File "C:\ProgramData\checkmk\agent\plugins\cmk_update_agent.checkmk.py", line 18, in <module> import logging.handlers File "C:\Program Files\Python38\Lib\logging\handlers.py", line 26, in <module> import logging, socket, os, pickle, struct, time, re File "C:\Program Files\Python38\Lib\socket.py", line 49, in <module> import _socket ImportError: DLL load failed while importing _socket: %1 is not a valid Win32 application.
Step-by-step guide
Verify if PYTHONHOME and PYTHONPATH are really set.
C:\ProgramData\checkmk\agent\plugins>set | findstr /c:"PYTHON" PYTHONHOME="C:\Program Files\Python38" PYTHONPATH="C:\Program Files\Python38\Lib"
.
Remove that from the settings:
C:\Program Files (x86)\checkmk\service>set PYTHONHOME= C:\Program Files (x86)\checkmk\service>set PYTHONPATH=
.
Try again to run the Checkmk updater
C:\Program Files (x86)\checkmk\service>check_mk_agent.exe updater register Using previous settings from C:\ProgramData\checkmk\agent\config\cmk-update-agent.state. Our host name in the monitoring:
.
Some background information:
Conclusion
You're able to run multiple Python Versions on one Windows machine. For that, we see two approaches at the moment.
Call your scripts with the correct Python version e.g.
c:\python\3.8\python.exe c:\python\2.7\python.exe
.
You can create a virtual env for your customized Python version like we do: https://virtualenv.pypa.io/en/latest/
 'C:\ProgramData\checkmk\agent\modules\python-3\.venv\Scripts\python.exe C:\ProgramData\checkmk\agent\plugins\cmk_update_agent.checkmk.py'
Related articles