parameters: (name=None, search_path=None, optional=False)
return_statement: return lib_found
docstring: Find dynamic library files.
  
      Parameters
      ----------
      name : list of str
          List of names to be found.
  
      Returns
      -------
      lib_path : list(string)
          List of all found path to the libraries
docstring_summary: Find dynamic library files.
docstring_tokens: Find dynamic library files .
function: def find_lib_path(name=None, search_path=None, optional=False):
      """Find dynamic library files.
  
      Parameters
      ----------
      name : list of str
          List of names to be found.
  
      Returns
      -------
      lib_path : list(string)
          List of all found path to the libraries
      """
      # See https://github.com/dmlc/tvm/issues/281 for some background.
  
      # NB: This will either be the source directory (if DECORD is run
      # inplace) or the install directory (if DECORD is installed).
      # An installed DECORD's curr_path will look something like:
      #   $PREFIX/lib/python3.6/site-packages/decord/_ffi
      ffi_dir = os.path.dirname(os.path.abspath(os.path.expanduser(__file__)))
      source_dir = os.path.join(ffi_dir, "..", "..", "..")
      install_lib_dir = os.path.join(ffi_dir, "..", "..", "..", "..")
  
      dll_path = []
  
      if os.environ.get('DECORD_LIBRARY_PATH', None):
          dll_path.append(os.environ['DECORD_LIBRARY_PATH'])
  
      if sys.platform.startswith('linux') and os.environ.get('LD_LIBRARY_PATH', None):
          dll_path.extend([p.strip() for p in os.environ['LD_LIBRARY_PATH'].split(":")])
      elif sys.platform.startswith('darwin') and os.environ.get('DYLD_LIBRARY_PATH', None):
          dll_path.extend([p.strip() for p in os.environ['DYLD_LIBRARY_PATH'].split(":")])
  
      # Pip lib directory
      dll_path.append(os.path.join(ffi_dir, ".."))
      # Default cmake build directory
      dll_path.append(os.path.join(source_dir, "build"))
      dll_path.append(os.path.join(source_dir, "build", "Release"))
      # Default make build directory
      dll_path.append(os.path.join(source_dir, "lib"))
  
      dll_path.append(install_lib_dir)
  
      dll_path = [os.path.abspath(x) for x in dll_path]
      if search_path is not None:
          if search_path is list:
              dll_path = dll_path + search_path
          else:
              dll_path.append(search_path)
      if name is not None:
          if isinstance(name, list):
              lib_dll_path = []
              for n in name:
                  lib_dll_path += [os.path.join(p, n) for p in dll_path]
          else:
              lib_dll_path = [os.path.join(p, name) for p in dll_path]
      else:
          if sys.platform.startswith('win32'):
              lib_dll_path = [os.path.join(p, 'libdecord.dll') for p in dll_path] +\
                             [os.path.join(p, 'decord.dll') for p in dll_path]
          elif sys.platform.startswith('darwin'):
              lib_dll_path = [os.path.join(p, 'libdecord.dylib') for p in dll_path]
          else:
              lib_dll_path = [os.path.join(p, 'libdecord.so') for p in dll_path]
  
      # try to find lib_dll_path
      lib_found = [p for p in lib_dll_path if os.path.exists(p) and os.path.isfile(p)]
  
      if not lib_found:
          message = ('Cannot find the files.\n' +
                     'List of candidates:\n' +
                     str('\n'.join(lib_dll_path)))
          if not optional:
              raise RuntimeError(message)
          return None
  
      return lib_found
function_tokens: def find_lib_path ( name = None , search_path = None , optional = False ) : # See https://github.com/dmlc/tvm/issues/281 for some background. # NB: This will either be the source directory (if DECORD is run # inplace) or the install directory (if DECORD is installed). # An installed DECORD's curr_path will look something like: #   $PREFIX/lib/python3.6/site-packages/decord/_ffi ffi_dir = os . path . dirname ( os . path . abspath ( os . path . expanduser ( __file__ ) ) ) source_dir = os . path . join ( ffi_dir , ".." , ".." , ".." ) install_lib_dir = os . path . join ( ffi_dir , ".." , ".." , ".." , ".." ) dll_path = [ ] if os . environ . get ( 'DECORD_LIBRARY_PATH' , None ) : dll_path . append ( os . environ [ 'DECORD_LIBRARY_PATH' ] ) if sys . platform . startswith ( 'linux' ) and os . environ . get ( 'LD_LIBRARY_PATH' , None ) : dll_path . extend ( [ p . strip ( ) for p in os . environ [ 'LD_LIBRARY_PATH' ] . split ( ":" ) ] ) elif sys . platform . startswith ( 'darwin' ) and os . environ . get ( 'DYLD_LIBRARY_PATH' , None ) : dll_path . extend ( [ p . strip ( ) for p in os . environ [ 'DYLD_LIBRARY_PATH' ] . split ( ":" ) ] ) # Pip lib directory dll_path . append ( os . path . join ( ffi_dir , ".." ) ) # Default cmake build directory dll_path . append ( os . path . join ( source_dir , "build" ) ) dll_path . append ( os . path . join ( source_dir , "build" , "Release" ) ) # Default make build directory dll_path . append ( os . path . join ( source_dir , "lib" ) ) dll_path . append ( install_lib_dir ) dll_path = [ os . path . abspath ( x ) for x in dll_path ] if search_path is not None : if search_path is list : dll_path = dll_path + search_path else : dll_path . append ( search_path ) if name is not None : if isinstance ( name , list ) : lib_dll_path = [ ] for n in name : lib_dll_path += [ os . path . join ( p , n ) for p in dll_path ] else : lib_dll_path = [ os . path . join ( p , name ) for p in dll_path ] else : if sys . platform . startswith ( 'win32' ) : lib_dll_path = [ os . path . join ( p , 'libdecord.dll' ) for p in dll_path ] + [ os . path . join ( p , 'decord.dll' ) for p in dll_path ] elif sys . platform . startswith ( 'darwin' ) : lib_dll_path = [ os . path . join ( p , 'libdecord.dylib' ) for p in dll_path ] else : lib_dll_path = [ os . path . join ( p , 'libdecord.so' ) for p in dll_path ] # try to find lib_dll_path lib_found = [ p for p in lib_dll_path if os . path . exists ( p ) and os . path . isfile ( p ) ] if not lib_found : message = ( 'Cannot find the files.\n' + 'List of candidates:\n' + str ( '\n' . join ( lib_dll_path ) ) ) if not optional : raise RuntimeError ( message ) return None return lib_found