From d2cd95bd6797a8d1270023773ff06d9ddd5a1cbc Mon Sep 17 00:00:00 2001
From: Zhiming Wang <i@zhimingwang.org>
Date: 星期二, 24 十二月 2024 09:59:37 +0800
Subject: [PATCH] utils.install_model_requirements: support installing with uv (#2329)

---
 funasr/utils/install_model_requirements.py |   34 ++++++++++++++++++++--------------
 1 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/funasr/utils/install_model_requirements.py b/funasr/utils/install_model_requirements.py
index d7295db..73a2dcb 100644
--- a/funasr/utils/install_model_requirements.py
+++ b/funasr/utils/install_model_requirements.py
@@ -1,15 +1,10 @@
+import shutil
 import subprocess
 
 
 def install_requirements(requirements_path):
     try:
-        result = subprocess.run(
-            ["pip", "install", "-r", requirements_path],
-            stdout=subprocess.PIPE,
-            stderr=subprocess.PIPE,
-            text=True,
-        )
-
+        result = pip_install_r(requirements_path)
         # check status
         if result.returncode == 0:
             print("install model requirements successfully")
@@ -19,13 +14,7 @@
             print("error", result.stderr)
             return False
     except Exception as e:
-        result = subprocess.run(
-            ["pip", "install", "-r", requirements_path],
-            stdout=subprocess.PIPE,
-            stderr=subprocess.PIPE,
-            text=True,
-        )
-
+        result = pip_install_r(requirements_path)
         # check status
         if result.returncode == 0:
             print("install model requirements successfully")
@@ -34,3 +23,20 @@
             print("fail to install model requirements! ")
             print("error", result.stderr)
             return False
+
+
+def pip_install_r(requirements_path):
+    cmd = []
+    if shutil.which("pip") is not None:
+        cmd = ["pip"]
+    elif shutil.which("uv") is not None:
+        cmd = ["uv", "pip"]
+    else:
+        raise RuntimeError("pip not found, failed to install model requirements")
+    cmd += ["install", "-r", requirements_path]
+    return subprocess.run(
+        cmd,
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+        text=True,
+    )

--
Gitblit v1.9.1