From 2c4c598832843ce56767fb44c2afd60fddbf537b Mon Sep 17 00:00:00 2001 From: Roland Tannous Date: Sat, 7 Mar 2026 08:40:25 +0000 Subject: [PATCH] fix: fail fast if runtime pip install of transformers 5.x fails --- studio/backend/core/export/worker.py | 12 ++++++++---- studio/backend/core/inference/worker.py | 12 ++++++++---- studio/backend/core/training/worker.py | 12 ++++++++---- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/studio/backend/core/export/worker.py b/studio/backend/core/export/worker.py index 5d54f75d8f..a581813221 100644 --- a/studio/backend/core/export/worker.py +++ b/studio/backend/core/export/worker.py @@ -47,18 +47,22 @@ def _activate_transformers_version(model_name: str, project_root: str) -> None: logger.warning(".venv_t5 not found at %s — installing at runtime", venv_t5) import subprocess as sp os.makedirs(venv_t5, exist_ok=True) - sp.run( + r1 = sp.run( [sys.executable, "-m", "pip", "install", "--target", venv_t5, "--no-deps", "transformers==5.1.0"], stdout=sp.PIPE, stderr=sp.STDOUT, ) - sp.run( + r2 = sp.run( [sys.executable, "-m", "pip", "install", "--target", venv_t5, "--no-deps", "huggingface_hub==1.3.0"], stdout=sp.PIPE, stderr=sp.STDOUT, ) - if os.path.isdir(venv_t5): - sys.path.insert(0, venv_t5) + if r1.returncode != 0 or r2.returncode != 0: + raise RuntimeError( + f"Failed to install transformers 5.x into {venv_t5}. " + f"pip returncode: transformers={r1.returncode}, huggingface_hub={r2.returncode}" + ) + sys.path.insert(0, venv_t5) else: logger.info("Using default transformers (4.57.x) for %s", model_name) diff --git a/studio/backend/core/inference/worker.py b/studio/backend/core/inference/worker.py index cac5dacd6e..99ead90f9c 100644 --- a/studio/backend/core/inference/worker.py +++ b/studio/backend/core/inference/worker.py @@ -49,18 +49,22 @@ def _activate_transformers_version(model_name: str, project_root: str) -> None: logger.warning(".venv_t5 not found at %s — installing at runtime", venv_t5) import subprocess as sp os.makedirs(venv_t5, exist_ok=True) - sp.run( + r1 = sp.run( [sys.executable, "-m", "pip", "install", "--target", venv_t5, "--no-deps", "transformers==5.1.0"], stdout=sp.PIPE, stderr=sp.STDOUT, ) - sp.run( + r2 = sp.run( [sys.executable, "-m", "pip", "install", "--target", venv_t5, "--no-deps", "huggingface_hub==1.3.0"], stdout=sp.PIPE, stderr=sp.STDOUT, ) - if os.path.isdir(venv_t5): - sys.path.insert(0, venv_t5) + if r1.returncode != 0 or r2.returncode != 0: + raise RuntimeError( + f"Failed to install transformers 5.x into {venv_t5}. " + f"pip returncode: transformers={r1.returncode}, huggingface_hub={r2.returncode}" + ) + sys.path.insert(0, venv_t5) else: logger.info("Using default transformers (4.57.x) for %s", model_name) diff --git a/studio/backend/core/training/worker.py b/studio/backend/core/training/worker.py index c937b3f110..1ed6b00131 100644 --- a/studio/backend/core/training/worker.py +++ b/studio/backend/core/training/worker.py @@ -44,18 +44,22 @@ def _activate_transformers_version(model_name: str, project_root: str) -> None: logger.warning(".venv_t5 not found at %s — installing at runtime", venv_t5) import subprocess as sp os.makedirs(venv_t5, exist_ok=True) - sp.run( + r1 = sp.run( [sys.executable, "-m", "pip", "install", "--target", venv_t5, "--no-deps", "transformers==5.1.0"], stdout=sp.PIPE, stderr=sp.STDOUT, ) - sp.run( + r2 = sp.run( [sys.executable, "-m", "pip", "install", "--target", venv_t5, "--no-deps", "huggingface_hub==1.3.0"], stdout=sp.PIPE, stderr=sp.STDOUT, ) - if os.path.isdir(venv_t5): - sys.path.insert(0, venv_t5) + if r1.returncode != 0 or r2.returncode != 0: + raise RuntimeError( + f"Failed to install transformers 5.x into {venv_t5}. " + f"pip returncode: transformers={r1.returncode}, huggingface_hub={r2.returncode}" + ) + sys.path.insert(0, venv_t5) else: logger.info("Using default transformers (4.57.x) for %s", model_name)