human
Complete this python program:
def mac_set_relative_dylib_deps(libname, distname):
assistant
#Here is the Python program you requested.

    """On Mac OS X set relative paths to dynamic library dependencies
    of `libname`.
    Relative paths allow to avoid using environment variable DYLD_LIBRARY_PATH.
    There are known some issues with DYLD_LIBRARY_PATH. Relative paths is
    more flexible mechanism.
    Current location of dependend libraries is derived from the location
    of the library path (paths start with \@loader_path\).
    \distname\  path of the library relative to dist directory of frozen
    executable. We need this to determine the level of directory
    level for @loader_path of binaries not found in dist directory.
    E.g. qt4 plugins are not in the same directory as Qt*.dylib
    files. Without using \@loader_path/../..\ for qt plugins
    Mac OS X would not be able to resolve shared library
    dependencies and qt plugins will not be loaded.
    """
    from macholib import util
    from macholib.MachO import MachO
    if (os.path.basename(libname) in _BOOTLOADER_FNAMES):
        return
    parent_dir = ''
    if os.path.dirname(distname):
        parent_level = len(os.path.dirname(distname).split(os.sep))
        parent_dir = (parent_level * (os.pardir + os.sep))
    def match_func(pth):
        '\n                                For    system    libraries    is    still    used    absolute    path.    It    is    unchanged.\n                                '
        if (not util.in_system_path(pth)):
            return os.path.join('@loader_path', parent_dir, os.path.basename(pth))
    dll = MachO(libname)
    dll.rewriteLoadCommands(match_func)
    try:
        f = open(dll.filename, 'rb+')
        for header in dll.headers:
            f.seek(0)
            dll.write(f)
        f.seek(0, 2)
        f.flush()
        f.close()
    except Exception:
        pass