Spaces:
Runtime error
Runtime error
import launch | |
import pkg_resources | |
import sys | |
import os | |
import shutil | |
import platform | |
from pathlib import Path | |
from typing import Tuple, Optional | |
repo_root = Path(__file__).parent | |
main_req_file = repo_root / "requirements.txt" | |
def comparable_version(version: str) -> Tuple: | |
return tuple(map(int, version.split("."))) | |
def get_installed_version(package: str) -> Optional[str]: | |
try: | |
return pkg_resources.get_distribution(package).version | |
except Exception: | |
return None | |
def extract_base_package(package_string: str) -> str: | |
base_package = package_string.split("@git")[0] | |
return base_package | |
def install_requirements(req_file): | |
with open(req_file) as file: | |
for package in file: | |
try: | |
package = package.strip() | |
if "==" in package: | |
package_name, package_version = package.split("==") | |
installed_version = get_installed_version(package_name) | |
if installed_version != package_version: | |
launch.run_pip( | |
f"install -U {package}", | |
f"sd-forge-controlnet requirement: changing {package_name} version from {installed_version} to {package_version}", | |
) | |
elif ">=" in package: | |
package_name, package_version = package.split(">=") | |
installed_version = get_installed_version(package_name) | |
if not installed_version or comparable_version( | |
installed_version | |
) < comparable_version(package_version): | |
launch.run_pip( | |
f"install -U {package}", | |
f"sd-forge-controlnet requirement: changing {package_name} version from {installed_version} to {package_version}", | |
) | |
elif not launch.is_installed(extract_base_package(package)): | |
launch.run_pip( | |
f"install {package}", | |
f"sd-forge-controlnet requirement: {package}", | |
) | |
except Exception as e: | |
print(e) | |
print( | |
f"Warning: Failed to install {package}, some preprocessors may not work." | |
) | |
install_requirements(main_req_file) | |