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) | |