import argparse import glob import os import shutil import site import subprocess import sys script_dir = os.getcwd() def run_cmd(cmd, capture_output=False, env=None): # Run shell commands return subprocess.run(cmd, shell=True, capture_output=capture_output, env=env) def check_env(): # If we have access to conda, we are probably in an environment conda_not_exist = run_cmd("conda", capture_output=True).returncode if conda_not_exist: print("Conda is not installed. Exiting...") sys.exit() # Ensure this is a new environment and not the base environment if os.environ["CONDA_DEFAULT_ENV"] == "base": print("Create an environment for this project and activate it. Exiting...") sys.exit() def install_dependencies(): # Install Git and clone repo run_cmd("conda install -y -k git") run_cmd("git clone https://github.com/C0untFloyd/roop-unleashed.git") run_cmd("git checkout 8ee085322158c4eeb0cd0126a49949f1acf0f7df") # Install the webui dependencies update_dependencies() def update_dependencies(): global MY_PATH os.chdir(MY_PATH) # do a hard reset for to update even if there are local changes run_cmd("git fetch --all") run_cmd("git reset --hard origin/main") run_cmd("git pull") # Installs/Updates dependencies from all requirements.txt run_cmd("python -m pip install -r requirements.txt") def start_app(): global MY_PATH os.chdir(MY_PATH) # forward commandline arguments sys.argv.pop(0) args = ' '.join(sys.argv) print("Launching App") run_cmd(f'python run.py {args}') if __name__ == "__main__": global MY_PATH MY_PATH = "roop-unleashed" # Verifies we are in a conda environment check_env() # If webui has already been installed, skip and run if not os.path.exists(MY_PATH): install_dependencies() else: # moved update from batch to here, because of batch limitations updatechoice = input("Check for Updates? [y/n]").lower() if updatechoice == "y": update_dependencies() # Run the model with webui os.chdir(script_dir) start_app()