From 31eaab257c65db052e0ccd99626dda59ee09a1ec Mon Sep 17 00:00:00 2001 From: swk Date: Tue, 7 Oct 2025 15:58:48 +0900 Subject: [PATCH] improved dll load to use PATH env variable support --- hid/__init__.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/hid/__init__.py b/hid/__init__.py index 752ddf5..db19b23 100644 --- a/hid/__init__.py +++ b/hid/__init__.py @@ -1,13 +1,12 @@ -import os import ctypes import atexit import enum +from ctypes.util import find_library __all__ = ['HIDException', 'DeviceInfo', 'Device', 'enumerate', 'BusType'] - hidapi = None -library_paths = ( +libraries = ( 'libhidapi-hidraw.so', 'libhidapi-hidraw.so.0', 'libhidapi-libusb.so', @@ -18,18 +17,18 @@ 'hidapi.dll', 'libhidapi-0.dll' ) - -for lib in library_paths: - try: - hidapi = ctypes.cdll.LoadLibrary(lib) +for lib_path in [find_library(lib) for lib in libraries]: + if lib_path is not None: break - except OSError: - pass else: error = "Unable to load any of the following libraries:{}"\ - .format(' '.join(library_paths)) + .format(' '.join(libraries)) raise ImportError(error) +try: + hidapi = ctypes.cdll.LoadLibrary(lib_path) +except Exception as err: + raise ImportError(err) hidapi.hid_init() atexit.register(hidapi.hid_exit)