From 3e6ac712efd3da70346f9a83f39b58d78155d4d5 Mon Sep 17 00:00:00 2001 From: KimigaiiWuyi <444835641@qq.com> Date: Mon, 30 Sep 2024 23:50:14 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E8=87=AA=E5=8A=A8=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E4=BE=9D=E8=B5=96=E5=A4=B1=E8=B4=A5=E4=B9=8B=E5=90=8E?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gsuid_core/server.py | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/gsuid_core/server.py b/gsuid_core/server.py index 1fde11a..276e46f 100644 --- a/gsuid_core/server.py +++ b/gsuid_core/server.py @@ -266,24 +266,40 @@ def install_dependencies(dependencies: Dict, need_update: bool = False): CMD = f'{start_tool} install "{dependency}{version}" {extra}' try: - logger.info(f'[安装/更新依赖] 开始执行:{CMD}') - result = subprocess.run( - CMD, - capture_output=True, - text=True, - shell=True, + execute_cmd(CMD) + except Exception as e1: + logger.exception( + f'[安装/更新依赖] 安装失败(将会重试一次):{e1}' ) - # 检查命令执行结果 - if result.returncode == 0: - logger.success(f"依赖 {dependency} 安装成功!") - else: - logger.warning("依赖安装失败。错误信息:") - logger.warning(result.stderr) - except Exception as e: - logger.exception(f'[安装/更新依赖] 安装失败:{e}') + if ' python -m' in start_tool: + start_tool = start_tool.replace('python -m', '') + CMD = ( + f'{start_tool} install "{dependency}{version}" {extra}' + ) + try: + execute_cmd(CMD) + except Exception as e2: + logger.exception(f'[安装/更新依赖] 安装失败:{e2}') installed_dependencies = get_installed_dependencies() +def execute_cmd(CMD: str): + logger.info(f'[CMD执行] 开始执行:{CMD}') + result = subprocess.run( + CMD, + capture_output=True, + text=True, + shell=True, + ) + # 检查命令执行结果 + if result.returncode == 0: + logger.success(f"[CMD执行] {CMD} 成功执行!") + else: + logger.warning(f"[CMD执行] {CMD}执行失败。错误信息:") + logger.warning(result.stderr) + return result.returncode + + def get_installed_dependencies(): global installed_dependencies installed_packages = pkg_resources.working_set