|
49 | 49 |
|
50 | 50 | from . import _convert
|
51 | 51 |
|
52 |
| -if platform.system() == 'Windows': |
53 |
| - try: |
54 |
| - _lib = cdll.LoadLibrary('libopenslide-0.dll') |
55 |
| - except FileNotFoundError: |
56 |
| - import os |
57 | 52 |
|
58 |
| - if hasattr(os, 'add_dll_directory'): |
59 |
| - # Python >= 3.8 |
60 |
| - _admonition = 'Did you call os.add_dll_directory()?' |
61 |
| - else: |
62 |
| - _admonition = 'Did you add OpenSlide to PATH?' |
63 |
| - raise ModuleNotFoundError( |
64 |
| - f"Couldn't locate OpenSlide DLL. {_admonition} " |
65 |
| - "https://openslide.org/api/python/#installing" |
66 |
| - ) |
67 |
| -elif platform.system() == 'Darwin': |
68 |
| - try: |
69 |
| - _lib = cdll.LoadLibrary('libopenslide.0.dylib') |
70 |
| - except OSError: |
71 |
| - # MacPorts doesn't add itself to the dyld search path, but |
72 |
| - # does add itself to the find_library() search path |
73 |
| - # (DEFAULT_LIBRARY_FALLBACK in ctypes.macholib.dyld). |
74 |
| - import ctypes.util |
75 |
| - |
76 |
| - _lib = ctypes.util.find_library('openslide') |
77 |
| - if _lib is None: |
| 53 | +def _load_library(): |
| 54 | + if platform.system() == 'Windows': |
| 55 | + try: |
| 56 | + return cdll.LoadLibrary('libopenslide-0.dll') |
| 57 | + except FileNotFoundError: |
| 58 | + import os |
| 59 | + |
| 60 | + if hasattr(os, 'add_dll_directory'): |
| 61 | + # Python >= 3.8 |
| 62 | + admonition = 'Did you call os.add_dll_directory()?' |
| 63 | + else: |
| 64 | + admonition = 'Did you add OpenSlide to PATH?' |
78 | 65 | raise ModuleNotFoundError(
|
79 |
| - "Couldn't locate OpenSlide dylib. Is OpenSlide installed " |
80 |
| - "correctly? https://openslide.org/api/python/#installing" |
| 66 | + f"Couldn't locate OpenSlide DLL. {admonition} " |
| 67 | + "https://openslide.org/api/python/#installing" |
81 | 68 | )
|
82 |
| - _lib = cdll.LoadLibrary(_lib) |
83 |
| -else: |
84 |
| - _lib = cdll.LoadLibrary('libopenslide.so.0') |
| 69 | + elif platform.system() == 'Darwin': |
| 70 | + try: |
| 71 | + return cdll.LoadLibrary('libopenslide.0.dylib') |
| 72 | + except OSError: |
| 73 | + # MacPorts doesn't add itself to the dyld search path, but |
| 74 | + # does add itself to the find_library() search path |
| 75 | + # (DEFAULT_LIBRARY_FALLBACK in ctypes.macholib.dyld). |
| 76 | + import ctypes.util |
| 77 | + |
| 78 | + lib = ctypes.util.find_library('openslide') |
| 79 | + if lib is None: |
| 80 | + raise ModuleNotFoundError( |
| 81 | + "Couldn't locate OpenSlide dylib. Is OpenSlide installed " |
| 82 | + "correctly? https://openslide.org/api/python/#installing" |
| 83 | + ) |
| 84 | + return cdll.LoadLibrary(lib) |
| 85 | + else: |
| 86 | + return cdll.LoadLibrary('libopenslide.so.0') |
| 87 | + |
| 88 | + |
| 89 | +_lib = _load_library() |
85 | 90 |
|
86 | 91 |
|
87 | 92 | class OpenSlideError(Exception):
|
|
0 commit comments