26 from __future__
import absolute_import, division, print_function
37 from future
import standard_library
38 standard_library.install_aliases()
44 SHARED_LIB_EXTENSION_LIST = (
'.so',
'.dylib')
45 LIB_EXCEPTION_LIST = (
'_lsstcppimport.so',)
53 options = (
'os',
'DLFCN',
'ctypes')
56 m = importlib.import_module(mod)
57 if RTLD_GLOBAL
is None and hasattr(m,
"RTLD_GLOBAL"):
58 RTLD_GLOBAL = m.RTLD_GLOBAL
59 if RTLD_NOW
is None and hasattr(m,
"RTLD_NOW"):
63 if RTLD_GLOBAL
is not None and RTLD_NOW
is not None:
67 if RTLD_GLOBAL
is None:
68 raise NameError(
"RTLD_GLOBAL constant can not be determined")
77 DLFLAGS = RTLD_GLOBAL | RTLD_NOW
90 if 'orig_imp_load_module' not in locals():
91 orig_imp_load_module = imp.load_module
93 @functools.wraps(orig_imp_load_module)
95 pathParts = args[1].split(os.path.sep)
96 extension = os.path.splitext(pathParts[-1])[-1]
103 lsstIdx = [i
for i, el
in enumerate(pathParts)
if el ==
'python']
104 if pathParts[-1]
in LIB_EXCEPTION_LIST
or (extension
in SHARED_LIB_EXTENSION_LIST
and 105 pathParts[-1].startswith(
'_')
and 106 'lsst' in [pathParts[i + 1]
for i
in lsstIdx]):
108 originalDLFlags = sys.getdlopenflags()
110 sys.setdlopenflags(DLFLAGS)
115 sys.setdlopenflags(originalDLFlags)
119 imp.load_module = imp_load_module
134 "Could not import lsstcppimport;" 135 " please ensure the base package has been built (not just setup).\n",
def imp_load_module(name, args)