Sygil-Dev / stable-diffusion

GNU Affero General Public License v3.0
1.72k stars 148 forks source link

facexlib version conflict: gfpgan 1.3.4 depends on facexlib>=0.2.5 #169

Closed StephanTLavavej closed 2 years ago

StephanTLavavej commented 2 years ago

Summary

I've followed the installation instructions carefully, the server successfully starts, and I can use both Stable Diffusion and GFPGAN. However, when I run webui.cmd, I see a conflict message:

The conflict is caused by:
    The user requested facexlib 0.2.4 (from git+https://github.com/hlky/facexlib#egg=facexlib)
    gfpgan 1.3.4 depends on facexlib>=0.2.5

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

Pip subprocess error:
ERROR: Cannot install -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 23) and facexlib 0.2.4 (from git+https://github.com/hlky/facexlib#egg=facexlib) because these package versions have conflicting dependencies.
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

Analysis

I'm a Python novice, but I think I can see why this is happening. This repo's environment.yaml refers to https://github.com/hlky/facexlib :

https://github.com/hlky/stable-diffusion/blob/fa977b3d6f9d0b264035c949fd70415476f00036/environment.yaml#L33

And https://github.com/hlky/facexlib/blob/master/VERSION currently identifies itself as 0.2.4.

environment.yaml also refers to https://github.com/TencentARC/GFPGAN :

https://github.com/hlky/stable-diffusion/blob/fa977b3d6f9d0b264035c949fd70415476f00036/environment.yaml#L36

But https://github.com/TencentARC/GFPGAN/blob/master/requirements.txt#L2 currently requires facexlib>=0.2.5. This appeared in a commit literally one hour ago as I'm typing this, https://github.com/TencentARC/GFPGAN/commit/3e27784b1b4eb008d06c04dbbaf6bdde34c4da84 , so I may be the first person who's seen this.

It appears that TencentARC/GFPGAN is expecting the upstream repo https://github.com/xinntao/facexlib where https://github.com/xinntao/facexlib/blob/master/VERSION currently identifies itself as 0.2.5, due to a commit eight hours ago, https://github.com/xinntao/facexlib/commit/7655b7cde3073c641efc91414c230e81002ce285 .

Possible fixes

My novice guess is that hlky/facexlib should take an update from upstream xinntao/facexlib. Alternatively, perhaps the version of TencentARC/GFPGAN used by this repo needs to be "pinned".

Full webui.cmd output

If it helps, here is the exact text I'm seeing:

Click to expand verbatim output from webui.cmd: ``` D:\GitHub\stable-diffusion>webui anaconda3/miniconda3 detected in C:\Users\stl\miniconda3 CondaValueError: prefix already exists: C:\Users\stl\miniconda3\envs\ldo Collecting package metadata (repodata.json): done Solving environment: done Installing pip dependencies: \ Ran pip subprocess with arguments: ['C:\\Users\\stl\\miniconda3\\envs\\ldo\\python.exe', '-m', 'pip', 'install', '-U', '-r', 'D:\\GitHub\\stable-diffusion\\condaenv.0cqgpxpp.requirements.txt'] Pip subprocess output: Requirement already satisfied: albumentations==0.4.3 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 1)) (0.4.3) Requirement already satisfied: opencv-python==4.1.2.30 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 2)) (4.1.2.30) Requirement already satisfied: opencv-python-headless==4.1.2.30 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 3)) (4.1.2.30) Requirement already satisfied: pudb==2019.2 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 4)) (2019.2) Requirement already satisfied: imageio==2.9.0 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 5)) (2.9.0) Requirement already satisfied: imageio-ffmpeg==0.4.2 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 6)) (0.4.2) Requirement already satisfied: pytorch-lightning==1.4.2 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 7)) (1.4.2) Requirement already satisfied: omegaconf==2.1.1 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 8)) (2.1.1) Requirement already satisfied: test-tube>=0.7.5 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 9)) (0.7.5) Requirement already satisfied: streamlit>=0.73.1 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 10)) (1.12.2) Requirement already satisfied: einops==0.3.0 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 11)) (0.3.0) Requirement already satisfied: torch-fidelity==0.3.0 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 12)) (0.3.0) Requirement already satisfied: transformers==4.19.2 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 13)) (4.19.2) Requirement already satisfied: torchmetrics==0.6.0 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 14)) (0.6.0) Requirement already satisfied: kornia==0.6 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 15)) (0.6.0) Requirement already satisfied: gradio==3.1.6 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 16)) (3.1.6) Requirement already satisfied: accelerate==0.12.0 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 17)) (0.12.0) Requirement already satisfied: pynvml==11.4.1 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 18)) (11.4.1) Requirement already satisfied: basicsr>=1.3.4.0 in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 19)) (1.4.2) Obtaining facexlib from git+https://github.com/hlky/facexlib#egg=facexlib (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 20)) Updating d:\github\stable-diffusion\src\facexlib clone Obtaining taming-transformers from git+https://github.com/CompVis/taming-transformers#egg=taming-transformers (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 21)) Updating d:\github\stable-diffusion\src\taming-transformers clone Obtaining clip from git+https://github.com/openai/CLIP#egg=clip (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 22)) Updating d:\github\stable-diffusion\src\clip clone Obtaining GFPGAN from git+https://github.com/TencentARC/GFPGAN#egg=GFPGAN (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 23)) Updating d:\github\stable-diffusion\src\gfpgan clone Obtaining realesrgan from git+https://github.com/xinntao/Real-ESRGAN#egg=realesrgan (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 24)) Updating d:\github\stable-diffusion\src\realesrgan clone Obtaining k_diffusion from git+https://github.com/hlky/k-diffusion-sd#egg=k_diffusion (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 25)) Updating d:\github\stable-diffusion\src\k-diffusion clone Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Installing backend dependencies: started Installing backend dependencies: finished with status 'done' Preparing wheel metadata: started Preparing wheel metadata: finished with status 'done' Obtaining file:///D:/GitHub/stable-diffusion (from -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 26)) Requirement already satisfied: ftfy in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from clip->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 22)) (6.1.1) Requirement already satisfied: regex in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from clip->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 22)) (2022.8.17) Requirement already satisfied: tqdm in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from clip->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 22)) (4.64.0) Requirement already satisfied: torch in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from clip->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 22)) (1.11.0) Requirement already satisfied: torchvision in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from clip->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 22)) (0.12.0) Requirement already satisfied: filterpy in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from facexlib->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 20)) (1.4.5) Requirement already satisfied: numba in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from facexlib->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 20)) (0.56.0) Requirement already satisfied: numpy in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from facexlib->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 20)) (1.19.2) Requirement already satisfied: Pillow in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from facexlib->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 20)) (9.2.0) Requirement already satisfied: scipy in c:\users\stl\miniconda3\envs\ldo\lib\site-packages (from facexlib->-r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 20)) (1.9.1) INFO: pip is looking at multiple versions of facexlib to determine which version is compatible with other requirements. This could take a while. INFO: pip is looking at multiple versions of clip to determine which version is compatible with other requirements. This could take a while. The conflict is caused by: The user requested facexlib 0.2.4 (from git+https://github.com/hlky/facexlib#egg=facexlib) gfpgan 1.3.4 depends on facexlib>=0.2.5 To fix this you could try to: 1. loosen the range of package versions you've specified 2. remove package versions to allow pip attempt to solve the dependency conflict Pip subprocess error: ERROR: Cannot install -r D:\GitHub\stable-diffusion\condaenv.0cqgpxpp.requirements.txt (line 23) and facexlib 0.2.4 (from git+https://github.com/hlky/facexlib#egg=facexlib) because these package versions have conflicting dependencies. ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies failed CondaEnvException: Pip failed Relauncher: Launching... Loaded GFPGAN Loaded RealESRGAN with model RealESRGAN_x4plus Loading model from models/ldm/stable-diffusion-v1/model.ckpt Global Step: 470000 LatentDiffusion: Running in eps-prediction mode DiffusionWrapper has 859.52 M params. making attention of type 'vanilla' with 512 in_channels Working with z of shape (1, 4, 32, 32) = 4096 dimensions. making attention of type 'vanilla' with 512 in_channels Running on local URL: http://localhost:7860/ To create a public link, set `share=True` in `launch()`. ```

Thanks!

(Thanks for your amazing repo! Getting started was very easy, and it runs much faster than other forks I've tried. :smile_cat: Although this version conflict doesn't seem to interfere with usability, I'm reporting it to help improve the experience.)

StephanTLavavej commented 2 years ago

@AscendedGravity reported this as #168 about five minutes before I finished writing :joy_cat:. Feel free to close this as a duplicate.

AscendedGravity commented 2 years ago

Yours is so much more detailed though! :star_struck:

davidhennemann commented 2 years ago

For now: easy fix is to pin the version in the environment.yaml to previous non breaking commit.

    - -e git+https://github.com/TencentARC/GFPGAN.git@2c420ee56535f7a26d7eeb7f5b02a851cb1c1c63#egg=GFPGAN
hlky commented 2 years ago

@davidhennemann don't do this >_>

it's fixed now, gfpgan updated their requirements to facexlib 0.2.5, we forked facexlib to add a fix for gfpgan, I've pulled the changes from facexlib so everything is fine

davidhennemann commented 2 years ago

Ok thats way better :D

hlky commented 2 years ago

You shouldn't need any updates, just run webui.cmd again