RodSizer_web / RodSizer_Launcher_Windows.bat
Caesium135's picture
Initial commit
065e391
Raw History Blame Contribute Delete
4.71 kB
@echo off
cd /d "%~dp0"
setlocal enabledelayedexpansion
set "PROJECT_DIR=%CD%"
set "BACKEND_DIR=%PROJECT_DIR%\backend"
set "VENV_DIR=%PROJECT_DIR%\.venv"
set "VENV_PYTHON=%VENV_DIR%\Scripts\python.exe"
set "APP_URL=http://127.0.0.1:8501"
echo ==================================================
echo RodSizer - Launcher
echo ==================================================
echo.
set "PY_EXE="
REM --- 1. Try 'python' command ---
python --version >nul 2>&1
if %errorlevel% equ 0 set "PY_EXE=python"
if defined PY_EXE goto FOUND_PYTHON
REM --- 2. Try 'py' launcher ---
py --version >nul 2>&1
if !errorlevel! equ 0 set "PY_EXE=py"
if defined PY_EXE goto FOUND_PYTHON
REM --- 3. Try Auto-Detect Common Paths ---
if exist "C:\Python39\python.exe" set "PY_EXE=C:\Python39\python.exe" & goto FOUND_PYTHON
if exist "C:\Python310\python.exe" set "PY_EXE=C:\Python310\python.exe" & goto FOUND_PYTHON
if exist "C:\Python311\python.exe" set "PY_EXE=C:\Python311\python.exe" & goto FOUND_PYTHON
if exist "C:\Program Files\Python39\python.exe" set "PY_EXE=C:\Program Files\Python39\python.exe" & goto FOUND_PYTHON
if exist "C:\Program Files\Python310\python.exe" set "PY_EXE=C:\Program Files\Python310\python.exe" & goto FOUND_PYTHON
if exist "C:\Program Files\Python311\python.exe" set "PY_EXE=C:\Program Files\Python311\python.exe" & goto FOUND_PYTHON
REM --- 4. User Input Fallback ---
:ASK_USER
echo.
echo [ERROR] Could not find Python automatically.
echo.
echo Please locate your 'python.exe' file.
echo TIP: Look in "C:\Program Files\Python3x" or "AppData\Local\Programs\Python"
echo.
echo IMPORTANT: Drag the FILE, not a shortcut.
echo.
set /p "PY_EXE=Drag and Drop python.exe here and press Enter: "
set "PY_EXE=!PY_EXE:"=!"
REM Validate Shortcut
echo "!PY_EXE!" | findstr /i ".lnk" >nul
if %errorlevel% equ 0 (
echo.
echo [ERROR] You provided a Shortcut (.lnk).
echo Please use the real python.exe.
goto ASK_USER
)
:FOUND_PYTHON
echo.
echo [INFO] Using Python: "!PY_EXE!"
REM Verify selected Python
"!PY_EXE!" --version >nul 2>&1
if errorlevel 1 (
echo.
echo [CRITICAL ERROR] Selected python path is invalid.
pause
exit /b 1
)
if not exist "%BACKEND_DIR%\requirements.txt" (
echo.
echo [CRITICAL ERROR] Missing backend\requirements.txt
pause
exit /b 1
)
if not exist "%BACKEND_DIR%\main.py" (
echo.
echo [CRITICAL ERROR] Missing backend\main.py
pause
exit /b 1
)
REM --- 5. Setup Virtual Environment ---
if exist "%VENV_PYTHON%" goto CHECK_ENV
echo.
echo [First Run] Setting up Python environment...
"!PY_EXE!" -m venv "%VENV_DIR%"
if errorlevel 1 (
echo.
echo [CRITICAL ERROR] Failed to create virtual environment.
pause
exit /b 1
)
REM Clear screen to focus attention
cls
echo ==================================================================
echo FIRST RUN SETUP - INSTALLING DEPENDENCIES
echo ==================================================================
echo.
echo Downloading: OpenCV, NumPy, FastAPI, Uvicorn, and others...
echo.
echo PLEASE WAIT: This typically takes 1-3 minutes.
echo You will see download progress below.
echo.
echo (Do not close this window)
echo.
echo ==================================================================
echo.
REM Give user 2 seconds to read before text flies by
timeout /t 2 >nul
"%VENV_PYTHON%" -m pip install --upgrade pip
if errorlevel 1 (
echo.
echo [CRITICAL ERROR] Failed to upgrade pip.
pause
exit /b 1
)
"%VENV_PYTHON%" -m pip install -r "%BACKEND_DIR%\requirements.txt"
if errorlevel 1 (
echo.
echo [CRITICAL ERROR] Dependency installation failed.
echo Please run RodSizer_DEBUG_Windows.bat for a guided repair.
pause
exit /b 1
)
:CHECK_ENV
echo.
echo [INFO] Checking Python environment...
"%VENV_PYTHON%" -c "import cv2, numpy, fastapi, uvicorn, pandas, openpyxl, multipart, tifffile, h5py, skimage, scipy; import ncempy.io; from stardist.models import StarDist2D; from csbdeep.utils import normalize" >nul 2>&1
if errorlevel 1 (
echo.
echo [CRITICAL ERROR] The RodSizer environment is incomplete or damaged.
echo Please run RodSizer_DEBUG_Windows.bat to repair it.
pause
exit /b 1
)
echo Activating environment...
REM --- 6. Open Browser ---
echo.
echo Starting Server on PORT 8501...
echo The browser will open in 10 seconds...
echo.
echo IF PAGE FAILS TO LOAD:
echo 1. Keep this window open.
echo 2. Open Chrome/Edge and go to: %APP_URL%
echo.
start "" cmd /c "timeout /t 10 >nul & start %APP_URL%"
REM --- 7. Run Server ---
echo Close this window to stop the app.
cd /d "%BACKEND_DIR%"
"%VENV_PYTHON%" -m uvicorn main:app --reload --host 127.0.0.1 --port 8501
pause