From 6662dc66d53e3af274fa7b83e98121d71e5aee97 Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Sat, 24 Dec 2022 13:37:50 +0530 Subject: [PATCH] Updated scripts to install sdkit into existing installations, while still working with new installations --- scripts/Developer Console.cmd | 19 ++-- scripts/check_modules.py | 15 +++ scripts/developer_console.sh | 20 ++-- scripts/on_env_start.bat | 1 + scripts/on_env_start.sh | 1 + scripts/on_sd_start.bat | 194 ++++++++++------------------------ scripts/on_sd_start.sh | 144 +++++++------------------ 7 files changed, 129 insertions(+), 265 deletions(-) create mode 100644 scripts/check_modules.py diff --git a/scripts/Developer Console.cmd b/scripts/Developer Console.cmd index 750e4311..921a9dca 100644 --- a/scripts/Developer Console.cmd +++ b/scripts/Developer Console.cmd @@ -23,23 +23,20 @@ call conda --version echo. -@rem activate the environment -call conda activate .\stable-diffusion\env +@rem activate the legacy environment (if present) and set PYTHONPATH +if exist "installer_files\env" ( + set PYTHONPATH=%cd%\installer_files\env\lib\site-packages +) +if exist "stable-diffusion\env" ( + call conda activate .\stable-diffusion\env + set PYTHONPATH=%cd%\stable-diffusion\env\lib\site-packages +) call where python call python --version -@rem set the PYTHONPATH -cd stable-diffusion -set SD_DIR=%cd% - -cd env\lib\site-packages -set PYTHONPATH=%SD_DIR%;%cd% -cd ..\..\.. echo PYTHONPATH=%PYTHONPATH% -cd .. - @rem done echo. diff --git a/scripts/check_modules.py b/scripts/check_modules.py new file mode 100644 index 00000000..2944f540 --- /dev/null +++ b/scripts/check_modules.py @@ -0,0 +1,15 @@ +''' +This script checks if the given modules exist +''' + +import sys +import pkgutil + +modules = sys.argv[1:] +missing_modules = [] +for m in modules: + if pkgutil.find_loader(m) is None: + print('module', m, 'not found') + exit(1) + +print('ok') diff --git a/scripts/developer_console.sh b/scripts/developer_console.sh index 49e71b34..73972568 100755 --- a/scripts/developer_console.sh +++ b/scripts/developer_console.sh @@ -26,21 +26,23 @@ if [ "$0" == "bash" ]; then echo "" - # activate the environment - CONDA_BASEPATH=$(conda info --base) - source "$CONDA_BASEPATH/etc/profile.d/conda.sh" # otherwise conda complains about 'shell not initialized' (needed when running in a script) + # activate the legacy environment (if present) and set PYTHONPATH + if [ -e "installer_files/env" ]; then + export PYTHONPATH="$(pwd)/installer_files/env/lib/python3.8/site-packages" + fi + if [ -e "stable-diffusion/env" ]; then + CONDA_BASEPATH=$(conda info --base) + source "$CONDA_BASEPATH/etc/profile.d/conda.sh" # otherwise conda complains about 'shell not initialized' (needed when running in a script) - conda activate ./stable-diffusion/env + conda activate ./stable-diffusion/env + + export PYTHONPATH="$(pwd)/stable-diffusion/env/lib/python3.8/site-packages" + fi which python python --version - # set the PYTHONPATH - cd stable-diffusion - SD_PATH=`pwd` - export PYTHONPATH="$SD_PATH:$SD_PATH/env/lib/python3.8/site-packages" echo "PYTHONPATH=$PYTHONPATH" - cd .. # done diff --git a/scripts/on_env_start.bat b/scripts/on_env_start.bat index b18b4f4e..13d54161 100644 --- a/scripts/on_env_start.bat +++ b/scripts/on_env_start.bat @@ -53,6 +53,7 @@ if "%update_branch%"=="" ( @xcopy sd-ui-files\ui ui /s /i /Y /q @copy sd-ui-files\scripts\on_sd_start.bat scripts\ /Y @copy sd-ui-files\scripts\bootstrap.bat scripts\ /Y +@copy sd-ui-files\scripts\check_modules.py scripts\ /Y @copy "sd-ui-files\scripts\Start Stable Diffusion UI.cmd" . /Y @copy "sd-ui-files\scripts\Developer Console.cmd" . /Y diff --git a/scripts/on_env_start.sh b/scripts/on_env_start.sh index 185e4fd4..cac307c2 100755 --- a/scripts/on_env_start.sh +++ b/scripts/on_env_start.sh @@ -37,6 +37,7 @@ rm -rf ui cp -Rf sd-ui-files/ui . cp sd-ui-files/scripts/on_sd_start.sh scripts/ cp sd-ui-files/scripts/bootstrap.sh scripts/ +cp sd-ui-files/scripts/check_modules.py scripts/ cp sd-ui-files/scripts/start.sh . cp sd-ui-files/scripts/developer_console.sh . diff --git a/scripts/on_sd_start.bat b/scripts/on_sd_start.bat index 620d0909..55b8e377 100644 --- a/scripts/on_sd_start.bat +++ b/scripts/on_sd_start.bat @@ -10,6 +10,14 @@ if exist "%cd%\profile" ( set USERPROFILE=%cd%\profile ) +@rem set the correct installer path (current vs legacy) +if exist "%cd%\installer_files\env" ( + set INSTALL_ENV_DIR=%cd%\installer_files\env +) +if exist "%cd%\stable-diffusion\env" ( + set INSTALL_ENV_DIR=%cd%\stable-diffusion\env +) + @mkdir tmp @set TMP=%cd%\tmp @set TEMP=%cd%\tmp @@ -27,137 +35,71 @@ if exist "Open Developer Console.cmd" del "Open Developer Console.cmd" @call python -c "import os; import shutil; frm = 'sd-ui-files\\ui\\hotfix\\9c24e6cd9f499d02c4f21a033736dabd365962dc80fe3aeb57a8f85ea45a20a3.26fead7ea4f0f843f6eb4055dfd25693f1a71f3c6871b184042d4b126244e142'; dst = os.path.join(os.path.expanduser('~'), '.cache', 'huggingface', 'transformers', '9c24e6cd9f499d02c4f21a033736dabd365962dc80fe3aeb57a8f85ea45a20a3.26fead7ea4f0f843f6eb4055dfd25693f1a71f3c6871b184042d4b126244e142'); shutil.copyfile(frm, dst) if os.path.exists(dst) else print(''); print('Hotfixed broken JSON file from OpenAI');" -if NOT DEFINED test_sd2 set test_sd2=N +@rem create the stable-diffusion folder, to work with legacy installations +if not exist "stable-diffusion" mkdir stable-diffusion +cd stable-diffusion -@>nul findstr /m "sd_git_cloned" scripts\install_status.txt -@if "%ERRORLEVEL%" EQU "0" ( - @echo "Stable Diffusion's git repository was already installed. Updating.." - - @cd stable-diffusion - - @call git remote set-url origin https://github.com/easydiffusion/diffusion-kit.git - - @call git reset --hard - @call git pull - - if "%test_sd2%" == "N" ( - @call git -c advice.detachedHead=false checkout 7f32368ed1030a6e710537047bacd908adea183a - ) - if "%test_sd2%" == "Y" ( - @call git -c advice.detachedHead=false checkout 733a1f6f9cae9b9a9b83294bf3281b123378cb1f - ) - - @cd .. -) else ( - @echo. & echo "Downloading Stable Diffusion.." & echo. - - @call git clone https://github.com/easydiffusion/diffusion-kit.git stable-diffusion && ( - @echo sd_git_cloned >> scripts\install_status.txt - ) || ( - @echo "Error downloading Stable Diffusion. Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" - pause - @exit /b - ) - - @cd stable-diffusion - @call git -c advice.detachedHead=false checkout 7f32368ed1030a6e710537047bacd908adea183a - - @cd .. +@rem activate the old stable-diffusion env, if it exists +if exist "env" ( + call conda activate .\env ) -@cd stable-diffusion - -@>nul findstr /m "conda_sd_env_created" ..\scripts\install_status.txt -@if "%ERRORLEVEL%" EQU "0" ( - @echo "Packages necessary for Stable Diffusion were already installed" - - @call conda activate .\env +@rem install torch and torchvision +call python ..\scripts\check_modules.py torch torchvision +if "%ERRORLEVEL%" EQU "0" ( + echo "torch and torchvision have already been installed." ) else ( - @echo. & echo "Downloading packages necessary for Stable Diffusion.." & echo. & echo "***** This will take some time (depending on the speed of the Internet connection) and may appear to be stuck, but please be patient ***** .." & echo. - - @rmdir /s /q .\env + echo "Installing torch and torchvision.." @REM prevent conda from using packages from the user's home directory, to avoid conflicts - @set PYTHONNOUSERSITE=1 + set PYTHONNOUSERSITE=1 + set PYTHONPATH=%INSTALL_ENV_DIR%\lib\site-packages - set USERPROFILE=%cd%\profile - - set PYTHONPATH=%cd%;%cd%\env\lib\site-packages - - @call conda env create --prefix env -f environment.yaml || ( - @echo. & echo "Error installing the packages necessary for Stable Diffusion. Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" & echo. + call pip install --upgrade torch torchvision --extra-index-url https://download.pytorch.org/whl/cu116 || ( + echo "Error installing torch. Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" pause exit /b ) +) - @call conda activate .\env +@rem install/upgrade sdkit +call python ..\scripts\check_modules.py sdkit sdkit.models ldm transformers numpy antlr4 gfpgan realesrgan +if "%ERRORLEVEL%" EQU "0" ( + echo "sdkit is already installed." - for /f "tokens=*" %%a in ('python -c "import torch; import ldm; import transformers; import numpy; import antlr4; print(42)"') do if "%%a" NEQ "42" ( - @echo. & echo "Dependency test failed! Error installing the packages necessary for Stable Diffusion. Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" & echo. + @REM prevent conda from using packages from the user's home directory, to avoid conflicts + set PYTHONNOUSERSITE=1 + set PYTHONPATH=%INSTALL_ENV_DIR%\lib\site-packages + + call >nul pip install --upgrade sdkit || ( + echo "Error updating sdkit" + ) +) else ( + echo "Installing sdkit: https://pypi.org/project/sdkit/" + + @REM prevent conda from using packages from the user's home directory, to avoid conflicts + set PYTHONNOUSERSITE=1 + set PYTHONPATH=%INSTALL_ENV_DIR%\lib\site-packages + + call pip install sdkit || ( + echo "Error installing sdkit. Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" pause exit /b ) - - @echo conda_sd_env_created >> ..\scripts\install_status.txt ) set PATH=C:\Windows\System32;%PATH% -@>nul findstr /m "conda_sd_gfpgan_deps_installed" ..\scripts\install_status.txt -@if "%ERRORLEVEL%" EQU "0" ( - @echo "Packages necessary for GFPGAN (Face Correction) were already installed" -) else ( - @echo. & echo "Downloading packages necessary for GFPGAN (Face Correction).." & echo. - - @set PYTHONNOUSERSITE=1 - - set USERPROFILE=%cd%\profile - - set PYTHONPATH=%cd%;%cd%\env\lib\site-packages - - for /f "tokens=*" %%a in ('python -c "from gfpgan import GFPGANer; print(42)"') do if "%%a" NEQ "42" ( - @echo. & echo "Dependency test failed! Error installing the packages necessary for GFPGAN (Face Correction). Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" & echo. - pause - exit /b - ) - - @echo conda_sd_gfpgan_deps_installed >> ..\scripts\install_status.txt -) - -@>nul findstr /m "conda_sd_esrgan_deps_installed" ..\scripts\install_status.txt -@if "%ERRORLEVEL%" EQU "0" ( - @echo "Packages necessary for ESRGAN (Resolution Upscaling) were already installed" -) else ( - @echo. & echo "Downloading packages necessary for ESRGAN (Resolution Upscaling).." & echo. - - @set PYTHONNOUSERSITE=1 - - set USERPROFILE=%cd%\profile - - set PYTHONPATH=%cd%;%cd%\env\lib\site-packages - - for /f "tokens=*" %%a in ('python -c "from basicsr.archs.rrdbnet_arch import RRDBNet; from realesrgan import RealESRGANer; print(42)"') do if "%%a" NEQ "42" ( - @echo. & echo "Dependency test failed! Error installing the packages necessary for ESRGAN (Resolution Upscaling). Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" & echo. - pause - exit /b - ) - - @echo conda_sd_esrgan_deps_installed >> ..\scripts\install_status.txt -) - -@>nul findstr /m "conda_sd_ui_deps_installed" ..\scripts\install_status.txt +call python ..\scripts\check_modules.py uvicorn fastapi @if "%ERRORLEVEL%" EQU "0" ( echo "Packages necessary for Stable Diffusion UI were already installed" ) else ( @echo. & echo "Downloading packages necessary for Stable Diffusion UI.." & echo. - @set PYTHONNOUSERSITE=1 + set PYTHONNOUSERSITE=1 + set PYTHONPATH=%INSTALL_ENV_DIR%\lib\site-packages - set USERPROFILE=%cd%\profile - - set PYTHONPATH=%cd%;%cd%\env\lib\site-packages - - @call conda install -c conda-forge -y --prefix env uvicorn fastapi || ( + @call conda install -c conda-forge -y uvicorn fastapi || ( echo "Error installing the packages necessary for Stable Diffusion UI. Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" pause exit /b @@ -172,26 +114,6 @@ call WHERE uvicorn > .tmp exit /b ) -@>nul 2>nul call python -m picklescan --help -@if "%ERRORLEVEL%" NEQ "0" ( - @echo. & echo Picklescan not found. Installing - @call pip install picklescan || ( - echo "Error installing the picklescan package necessary for Stable Diffusion UI. Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" - pause - exit /b - ) -) - -@>nul 2>nul call python -c "import safetensors" -@if "%ERRORLEVEL%" NEQ "0" ( - @echo. & echo SafeTensors not found. Installing - @call pip install safetensors || ( - echo "Error installing the safetensors package necessary for Stable Diffusion UI. Sorry about that, please try to:" & echo " 1. Run this installer again." & echo " 2. If that doesn't fix it, please try the common troubleshooting steps at https://github.com/cmdr2/stable-diffusion-ui/wiki/Troubleshooting" & echo " 3. If those steps don't help, please copy *all* the error messages in this window, and ask the community at https://discord.com/invite/u9yhsFmEkB" & echo " 4. If that doesn't solve the problem, please file an issue at https://github.com/cmdr2/stable-diffusion-ui/issues" & echo "Thanks!" - pause - exit /b - ) -) - @>nul findstr /m "conda_sd_ui_deps_installed" ..\scripts\install_status.txt @if "%ERRORLEVEL%" NEQ "0" ( @echo conda_sd_ui_deps_installed >> ..\scripts\install_status.txt @@ -357,10 +279,6 @@ if not exist "..\models\vae" mkdir "..\models\vae" ) ) -if "%test_sd2%" == "Y" ( - @call pip install open_clip_torch==2.0.2 -) - @>nul findstr /m "sd_install_complete" ..\scripts\install_status.txt @if "%ERRORLEVEL%" NEQ "0" ( @echo sd_weights_downloaded >> ..\scripts\install_status.txt @@ -371,10 +289,8 @@ if "%test_sd2%" == "Y" ( @set SD_DIR=%cd% -@cd env\lib\site-packages -@set PYTHONPATH=%SD_DIR%;%cd% -@cd ..\..\.. -@echo PYTHONPATH=%PYTHONPATH% +set PYTHONPATH=%INSTALL_ENV_DIR%\lib\site-packages +echo PYTHONPATH=%PYTHONPATH% call where python call python --version @@ -383,13 +299,9 @@ call python --version @set SD_UI_PATH=%cd%\ui @cd stable-diffusion -@rem -@rem Rewrite easy-install.pth. This fixes the installation if the user has relocated the SDUI installation -@rem ->env\Lib\site-packages\easy-install.pth echo %cd%\src\taming-transformers ->>env\Lib\site-packages\easy-install.pth echo %cd%\src\clip ->>env\Lib\site-packages\easy-install.pth echo %cd%\src\gfpgan ->>env\Lib\site-packages\easy-install.pth echo %cd%\src\realesrgan +@rem disable the legacy src and ldm folder +if exist src rename src src-old +if exist ldm rename ldm ldm-old @if NOT DEFINED SD_UI_BIND_PORT set SD_UI_BIND_PORT=9000 @if NOT DEFINED SD_UI_BIND_IP set SD_UI_BIND_IP=0.0.0.0 diff --git a/scripts/on_sd_start.sh b/scripts/on_sd_start.sh index 3e082b81..53f73277 100755 --- a/scripts/on_sd_start.sh +++ b/scripts/on_sd_start.sh @@ -21,116 +21,69 @@ python -c "import os; import shutil; frm = 'sd-ui-files/ui/hotfix/9c24e6cd9f499d # Caution, this file will make your eyes and brain bleed. It's such an unholy mess. # Note to self: Please rewrite this in Python. For the sake of your own sanity. -if [ "$test_sd2" == "" ]; then - export test_sd2="N" -fi - -if [ -e "scripts/install_status.txt" ] && [ `grep -c sd_git_cloned scripts/install_status.txt` -gt "0" ]; then - echo "Stable Diffusion's git repository was already installed. Updating.." - - cd stable-diffusion - - git remote set-url origin https://github.com/easydiffusion/diffusion-kit.git - - git reset --hard - git pull - - if [ "$test_sd2" == "N" ]; then - git -c advice.detachedHead=false checkout 7f32368ed1030a6e710537047bacd908adea183a - elif [ "$test_sd2" == "Y" ]; then - git -c advice.detachedHead=false checkout 733a1f6f9cae9b9a9b83294bf3281b123378cb1f - fi - - cd .. -else - printf "\n\nDownloading Stable Diffusion..\n\n" - - if git clone https://github.com/easydiffusion/diffusion-kit.git stable-diffusion ; then - echo sd_git_cloned >> scripts/install_status.txt - else - fail "git clone of basujindal/stable-diffusion.git failed" - fi - - cd stable-diffusion - git -c advice.detachedHead=false checkout 7f32368ed1030a6e710537047bacd908adea183a - - cd .. +# set the correct installer path (current vs legacy) +if [ -e "installer_files/env" ]; then + export INSTALL_ENV_DIR="$(pwd)/installer_files/env" +fi +if [ -e "stable-diffusion/env" ]; then + export INSTALL_ENV_DIR="$(pwd)/stable-diffusion/env" fi +# create the stable-diffusion folder, to work with legacy installations +if [ ! -e "stable-diffusion" ]; then mkdir stable-diffusion; fi cd stable-diffusion -if [ `grep -c conda_sd_env_created ../scripts/install_status.txt` -gt "0" ]; then - echo "Packages necessary for Stable Diffusion were already installed" - +# activate the old stable-diffusion env, if it exists +if [ -e "env" ]; then conda activate ./env || fail "conda activate failed" +fi + +# install torch and torchvision +if python ../scripts/check_modules.py torch torchvision; then + echo "torch and torchvision have already been installed." else - printf "\n\nDownloading packages necessary for Stable Diffusion..\n" - printf "\n\n***** This will take some time (depending on the speed of the Internet connection) and may appear to be stuck, but please be patient ***** ..\n\n" + echo "Installing torch and torchvision.." - # prevent conda from using packages from the user's home directory, to avoid conflicts export PYTHONNOUSERSITE=1 - export PYTHONPATH="$(pwd):$(pwd)/env/lib/site-packages" + export PYTHONPATH="$INSTALL_ENV_DIR/lib/python3.8/site-packages" - if conda env create --prefix env --force -f environment.yaml ; then - echo "Installed. Testing.." + if pip install --upgrade torch torchvision --extra-index-url https://download.pytorch.org/whl/cu116 ; then + echo "Installed." else - fail "'conda env create' failed" + fail "torch install failed" fi - - conda activate ./env || fail "conda activate failed" - - out_test=`python -c "import torch; import ldm; import transformers; import numpy; import antlr4; print(42)"` - if [ "$out_test" != "42" ]; then - fail "Dependency test failed" - fi - - echo conda_sd_env_created >> ../scripts/install_status.txt fi -if [ `grep -c conda_sd_gfpgan_deps_installed ../scripts/install_status.txt` -gt "0" ]; then - echo "Packages necessary for GFPGAN (Face Correction) were already installed" -else - printf "\n\nDownloading packages necessary for GFPGAN (Face Correction)..\n" +# install/upgrade sdkit +if python ../scripts/check_modules.py sdkit sdkit.models ldm transformers numpy antlr4 gfpgan realesrgan ; then + echo "sdkit is already installed." export PYTHONNOUSERSITE=1 - export PYTHONPATH="$(pwd):$(pwd)/env/lib/site-packages" + export PYTHONPATH="$INSTALL_ENV_DIR/lib/python3.8/site-packages" - out_test=`python -c "from gfpgan import GFPGANer; print(42)"` - if [ "$out_test" != "42" ]; then - echo "EE The dependency check has failed. This usually means that some system libraries are missing." - echo "EE On Debian/Ubuntu systems, this are often these packages: libsm6 libxext6 libxrender-dev" - echo "EE Other Linux distributions might have different package names for these libraries." - fail "GFPGAN dependency test failed" - fi - - echo conda_sd_gfpgan_deps_installed >> ../scripts/install_status.txt -fi - -if [ `grep -c conda_sd_esrgan_deps_installed ../scripts/install_status.txt` -gt "0" ]; then - echo "Packages necessary for ESRGAN (Resolution Upscaling) were already installed" + pip install --upgrade sdkit > /dev/null else - printf "\n\nDownloading packages necessary for ESRGAN (Resolution Upscaling)..\n" + echo "Installing sdkit: https://pypi.org/project/sdkit/" export PYTHONNOUSERSITE=1 - export PYTHONPATH="$(pwd):$(pwd)/env/lib/site-packages" + export PYTHONPATH="$INSTALL_ENV_DIR/lib/python3.8/site-packages" - out_test=`python -c "from basicsr.archs.rrdbnet_arch import RRDBNet; from realesrgan import RealESRGANer; print(42)"` - if [ "$out_test" != "42" ]; then - fail "ESRGAN dependency test failed" + if pip install sdkit ; then + echo "Installed." + else + fail "sdkit install failed" fi - - echo conda_sd_esrgan_deps_installed >> ../scripts/install_status.txt fi -if [ `grep -c conda_sd_ui_deps_installed ../scripts/install_status.txt` -gt "0" ]; then +if python ../scripts/check_modules.py uvicorn fastapi ; then echo "Packages necessary for Stable Diffusion UI were already installed" else printf "\n\nDownloading packages necessary for Stable Diffusion UI..\n\n" export PYTHONNOUSERSITE=1 - export PYTHONPATH="$(pwd):$(pwd)/env/lib/site-packages" + export PYTHONPATH="$INSTALL_ENV_DIR/lib/python3.8/site-packages" - if conda install -c conda-forge --prefix ./env -y uvicorn fastapi ; then + if conda install -c conda-forge -y uvicorn fastapi ; then echo "Installed. Testing.." else fail "'conda install uvicorn' failed" @@ -139,26 +92,8 @@ else if ! command -v uvicorn &> /dev/null; then fail "UI packages not found!" fi - - echo conda_sd_ui_deps_installed >> ../scripts/install_status.txt fi -if python -m picklescan --help >/dev/null 2>&1; then - echo "Picklescan is already installed." -else - echo "Picklescan not found, installing." - pip install picklescan || fail "Picklescan installation failed." -fi - -if python -c "import safetensors" --help >/dev/null 2>&1; then - echo "SafeTensors is already installed." -else - echo "SafeTensors not found, installing." - pip install safetensors || fail "SafeTensors installation failed." -fi - - - mkdir -p "../models/vae" if [ -f "sd-v1-4.ckpt" ]; then @@ -300,10 +235,6 @@ if [ ! -f "../models/vae/vae-ft-mse-840000-ema-pruned.ckpt" ]; then fi fi -if [ "$test_sd2" == "Y" ]; then - pip install open_clip_torch==2.0.2 -fi - if [ `grep -c sd_install_complete ../scripts/install_status.txt` -gt "0" ]; then echo sd_weights_downloaded >> ../scripts/install_status.txt echo sd_install_complete >> ../scripts/install_status.txt @@ -312,7 +243,8 @@ fi printf "\n\nStable Diffusion is ready!\n\n" SD_PATH=`pwd` -export PYTHONPATH="$SD_PATH:$SD_PATH/env/lib/python3.8/site-packages" + +export PYTHONPATH="$INSTALL_ENV_DIR/lib/python3.8/site-packages" echo "PYTHONPATH=$PYTHONPATH" which python @@ -322,6 +254,10 @@ cd .. export SD_UI_PATH=`pwd`/ui cd stable-diffusion +# disable the legacy src and ldm folder +if [ -e "src" ]; then mv src src-old; fi +if [ -e "ldm" ]; then mv ldm ldm-old; fi + uvicorn server:server_api --app-dir "$SD_UI_PATH" --port ${SD_UI_BIND_PORT:-9000} --host ${SD_UI_BIND_IP:-0.0.0.0} --log-level error read -p "Press any key to continue"