50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
import sys
|
|
import logging
|
|
from pathlib import Path
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
if sys.version_info < (3, 8):
|
|
import importlib_metadata
|
|
else:
|
|
import importlib.metadata as importlib_metadata
|
|
|
|
import launch
|
|
|
|
def ensure_installed(package):
|
|
isinstalled = launch.is_installed(package)
|
|
if not isinstalled:
|
|
launch.run_pip(f"install {package}", desc=f"{package}")
|
|
|
|
def ensure_version(package, version):
|
|
isinstalled = launch.is_installed(package)
|
|
if isinstalled:
|
|
installed_version = importlib_metadata.version(package)
|
|
if installed_version == version:
|
|
return
|
|
|
|
launch.run_pip(f"install {package}=={version}", desc=f"{package}=={version}")
|
|
|
|
|
|
def check_versions():
|
|
|
|
req_file = Path(__file__).parent / "requirements.txt"
|
|
for row in open(req_file):
|
|
splits = row.split("==")
|
|
try:
|
|
if "dynamicprompts" in row:
|
|
launch.run_pip(f"install -U {row}", desc=row)
|
|
elif len(splits) == 2:
|
|
package = splits[0].strip()
|
|
version = splits[1].strip()
|
|
|
|
ensure_version(package, version)
|
|
else:
|
|
package = row.strip()
|
|
ensure_installed(package)
|
|
except Exception as e:
|
|
logger.exception(e)
|
|
|
|
|
|
check_versions()
|