49 lines
1.1 KiB
Python
Executable File
49 lines
1.1 KiB
Python
Executable File
"""Emit the install commands for Unsloth without altering torch."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import shutil
|
|
import sys
|
|
from shlex import quote
|
|
|
|
try:
|
|
import torch
|
|
except ImportError as exc: # pragma: no cover
|
|
raise ImportError("Install torch via `pip install torch`") from exc
|
|
|
|
from packaging.version import Version as V
|
|
|
|
MIN_TORCH = V("2.6.0")
|
|
|
|
if V(torch.__version__.split("+")[0]) < MIN_TORCH:
|
|
raise RuntimeError(
|
|
f"Torch {torch.__version__} detected, but Unsloth requires >= {MIN_TORCH}."
|
|
)
|
|
|
|
USE_UV_FLAG = "--uv" in sys.argv[1:]
|
|
USE_PIP_FLAG = "--pip" in sys.argv[1:]
|
|
|
|
if USE_UV_FLAG and USE_PIP_FLAG:
|
|
raise SystemExit("Specify only one of --uv or --pip")
|
|
|
|
if USE_PIP_FLAG:
|
|
use_uv = False
|
|
elif USE_UV_FLAG:
|
|
use_uv = True
|
|
else:
|
|
use_uv = shutil.which("uv") is not None
|
|
|
|
python_exe = quote(sys.executable or shutil.which("python3") or "python")
|
|
|
|
if use_uv:
|
|
installer = "uv pip install --system --no-deps"
|
|
else:
|
|
installer = f"{python_exe} -m pip install --no-deps"
|
|
|
|
commands = [
|
|
f"{installer} unsloth-zoo==2025.9.12",
|
|
f'{installer} "unsloth[huggingface]==2025.9.9"',
|
|
]
|
|
|
|
print(" && ".join(commands))
|