mirror of
https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
synced 2025-04-05 20:29:02 +08:00
46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
import sys
|
|
import shlex
|
|
import subprocess
|
|
from functools import wraps
|
|
|
|
|
|
def patch():
|
|
if hasattr(subprocess, "__original_run"):
|
|
return
|
|
|
|
print("using uv")
|
|
try:
|
|
subprocess.run(['uv', '-V'])
|
|
except FileNotFoundError:
|
|
subprocess.run([sys.executable, '-m', 'pip', 'install', 'uv'])
|
|
|
|
subprocess.__original_run = subprocess.run
|
|
|
|
@wraps(subprocess.__original_run)
|
|
def patched_run(*args, **kwargs):
|
|
if args:
|
|
command, *_args = args
|
|
else:
|
|
command, _args = kwargs.pop("args", ""), ()
|
|
|
|
if isinstance(command, str):
|
|
command = shlex.split(command)
|
|
else:
|
|
command = [arg.strip() for arg in command]
|
|
|
|
assert isinstance(command, list)
|
|
|
|
if "pip" not in command:
|
|
return subprocess.__original_run([*command, *_args], **kwargs)
|
|
|
|
cmd = command[command.index("pip") + 1 :]
|
|
|
|
BAD_FLAGS = ("--prefer-binary",)
|
|
cmd = [arg for arg in cmd if arg not in BAD_FLAGS]
|
|
|
|
modified_command = ["uv", "pip", *cmd]
|
|
|
|
return subprocess.__original_run([*modified_command, *_args], **kwargs)
|
|
|
|
subprocess.run = patched_run
|