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