diff options
Diffstat (limited to 'magic/__init__.py')
-rw-r--r-- | magic/__init__.py | 37 |
1 files changed, 2 insertions, 35 deletions
diff --git a/magic/__init__.py b/magic/__init__.py index f2fd34d..7a75b75 100644 --- a/magic/__init__.py +++ b/magic/__init__.py @@ -206,41 +206,8 @@ def from_descriptor(fd, mime=False): m = _get_magic_type(mime) return m.from_descriptor(fd) - -libmagic = None -# Let's try to find magic or magic1 -dll = ctypes.util.find_library('magic') \ - or ctypes.util.find_library('magic1') \ - or ctypes.util.find_library('cygmagic-1') \ - or ctypes.util.find_library('libmagic-1') \ - or ctypes.util.find_library('msys-magic-1') # for MSYS2 - -# necessary because find_library returns None if it doesn't find the library -if dll: - libmagic = ctypes.CDLL(dll) - -if not libmagic or not libmagic._name: - windows_dlls = ['magic1.dll', 'cygmagic-1.dll', 'libmagic-1.dll', 'msys-magic-1.dll'] - platform_to_lib = {'darwin': ['/opt/local/lib/libmagic.dylib', - '/usr/local/lib/libmagic.dylib'] + - # Assumes there will only be one version installed - glob.glob('/usr/local/Cellar/libmagic/*/lib/libmagic.dylib'), # flake8:noqa - 'win32': windows_dlls, - 'cygwin': windows_dlls, - 'linux': ['libmagic.so.1'], - # fallback for some Linuxes (e.g. Alpine) where library search does not work # flake8:noqa - } - platform = 'linux' if sys.platform.startswith('linux') else sys.platform - for dll in platform_to_lib.get(platform, []): - try: - libmagic = ctypes.CDLL(dll) - break - except OSError: - pass - -if not libmagic or not libmagic._name: - # It is better to raise an ImportError since we are importing magic module - raise ImportError('failed to find libmagic. Check your installation') +from . import loader +libmagic = loader.load_lib() magic_t = ctypes.c_void_p |