| @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% |
|
|