| @echo off
|
| setlocal enabledelayedexpansion
|
| cd /d "%~dp0"
|
| |
|
|
|
|
| chcp 65001 >nul 2>nul
|
| set "PYTHONUTF8=1"
|
| set "PYTHONIOENCODING=utf-8"
|
| |
|
|
|
|
|
|
|
|
| set "PYCMD="
|
|
|
| if exist "%~dp0.pyenv\python.exe" (
|
| set "PYCMD=%~dp0.pyenv\python.exe"
|
| goto :launch
|
| )
|
|
|
| where py >nul 2>nul
|
| if !ERRORLEVEL! EQU 0 set "PYCMD=py"
|
|
|
| if not defined PYCMD (
|
| where python >nul 2>nul
|
| if !ERRORLEVEL! EQU 0 set "PYCMD=python"
|
| )
|
|
|
| if not defined PYCMD (
|
| where python3 >nul 2>nul
|
| if !ERRORLEVEL! EQU 0 set "PYCMD=python3"
|
| )
|
|
|
| if defined PYCMD goto :launch
|
|
|
| echo [run.bat] No Python detected on this machine.
|
| echo [run.bat] Downloading a portable Python (~30 MB) into .pyenv\ next to this script.
|
| echo [run.bat] Nothing is installed system-wide; delete .pyenv\ to remove it.
|
| echo.
|
|
|
| powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
| "$ErrorActionPreference='Stop';" ^
|
| "$ver='3.12.7';" ^
|
| "$dest='%~dp0.pyenv';" ^
|
| "$zip=Join-Path $env:TEMP 'oppai-py-embed.zip';" ^
|
| "[void](New-Item -ItemType Directory -Force -Path $dest);" ^
|
| "Invoke-WebRequest -UseBasicParsing -Uri \"https://www.python.org/ftp/python/$ver/python-$ver-embed-amd64.zip\" -OutFile $zip;" ^
|
| "Expand-Archive -Path $zip -DestinationPath $dest -Force;" ^
|
| "Remove-Item $zip -Force"
|
|
|
| if !ERRORLEVEL! NEQ 0 (
|
| echo.
|
| echo [run.bat] Failed to download portable Python.
|
| echo [run.bat] Check your internet connection, or install Python 3.10-3.12
|
| echo from https://www.python.org/downloads/ ^(tick "Add Python to PATH"^)
|
| echo and re-run this script.
|
| pause
|
| exit /b 1
|
| )
|
|
|
| if not exist "%~dp0.pyenv\python.exe" (
|
| echo [run.bat] Portable Python download finished but python.exe is missing.
|
| echo [run.bat] Try deleting .pyenv\ and re-running, or install Python manually.
|
| pause
|
| exit /b 1
|
| )
|
|
|
| set "PYCMD=%~dp0.pyenv\python.exe"
|
|
|
| :launch
|
| echo [run.bat] Using !PYCMD! to launch app.py.
|
| echo [run.bat] First run installs ~500 MB of packages; that only happens once.
|
| echo.
|
|
|
| "!PYCMD!" "%~dp0app.py" %*
|
| set "EXITCODE=!ERRORLEVEL!"
|
|
|
| if !EXITCODE! NEQ 0 (
|
| echo.
|
| echo [run.bat] app.py exited with code !EXITCODE!.
|
| pause
|
| )
|
| endlocal & exit /b %EXITCODE%
|
|
|