onw / find_python.bat
ryugyosoft's picture
onw 0.4: API-first server (/ info, /health, CORS, --api-key, /chat, /check), onw window (model download manager, server control, settings), setup finds / installs Python
67fe962 verified
Raw
History Blame Contribute Delete
2.22 kB
@echo off
rem Sets PY to a Python 3.10+ command, offering to install Python 3.12 with winget when none is found.
rem Used by setup.bat and start.bat: call find_python.bat then if not defined PY exit /b 1
set "PY="
set "CHECK=import sys; sys.exit(0 if sys.version_info >= (3, 10) else 1)"
rem 1) the py launcher, 2) python on PATH (the Microsoft Store alias fails this check, it is not a real Python),
rem 3) the per-user install locations winget / python.org use
if not defined ONW_TEST_NOPY (
py -3 -c "%CHECK%" >nul 2>nul && set "PY=py -3"
if not defined PY python -c "%CHECK%" >nul 2>nul && set "PY=python"
if not defined PY for %%V in (313 312 311 310) do (
if not defined PY if exist "%LOCALAPPDATA%\Programs\Python\Python%%V\python.exe" set "PY="%LOCALAPPDATA%\Programs\Python\Python%%V\python.exe""
)
)
if defined PY exit /b 0
echo.
echo Python 3.10 or newer was not found.
where winget >nul 2>nul
if errorlevel 1 (
echo winget is not available either. Please install Python from https://www.python.org/downloads/
echo ^(check "Add python.exe to PATH"^), then run this again.
start "" https://www.python.org/downloads/
exit /b 1
)
choice /c YN /m "Install Python 3.12 for this user with winget now (accepts the Python license)"
if errorlevel 2 (
echo Please install Python 3.10+ from https://www.python.org/downloads/ and run this again.
exit /b 1
)
winget install -e --id Python.Python.3.12 --scope user --accept-package-agreements --accept-source-agreements
if errorlevel 1 (
echo winget could not install Python. Please install it from https://www.python.org/downloads/
exit /b 1
)
rem the new PATH is not visible in this window yet: use the installed files directly
if exist "%LOCALAPPDATA%\Programs\Python\Python312\python.exe" set "PY="%LOCALAPPDATA%\Programs\Python\Python312\python.exe""
if not defined PY if exist "%LOCALAPPDATA%\Programs\Python\Launcher\py.exe" set "PY="%LOCALAPPDATA%\Programs\Python\Launcher\py.exe" -3"
if not defined PY (
echo Python was installed but could not be found yet. Please open a new window and run this again.
exit /b 1
)
echo [setup] using %PY%
exit /b 0