def install_lib_if_missing()

in 3_optimization-design-ptn/03_prompt-optimization/promptwizard/glue/common/utils/runtime_tasks.py [0:0]


def install_lib_if_missing(lib_name, find_links = None) -> bool:
    """
    Check if library with name `lib_name` is installed in environment. If not, install it in runtime.

    :param lib_name: Name of library
    :return: True if library was installed. False if it was not initially installed and was installed now.
    """
    try:
        version = None
        if "==" in lib_name:
            lib_name, version = lib_name.split("==")
        distri_obj = distribution(lib_name)
        # if version and distri_obj.version != version:
        #     raise GlueValidaionException(f"{lib_name} with version={distri_obj.version} is found. "
        #                                  f"But version needed is {version}", None)
        return True
    except (PackageNotFoundError, GlueValidaionException):
        logger.info(CommonLogsStr.INSTALL_MISSING_LIB.format(lib_name=lib_name))
        with open(os.devnull, 'w') as devnull:
            if find_links:
                subprocess.check_call([sys.executable, "-m", "pip", "install", lib_name, "-f", find_links], stdout=devnull, stderr=devnull)
            else:
                subprocess.check_call([sys.executable, "-m", "pip", "install", lib_name], stdout=devnull, stderr=devnull)

    return False