samples: update Python launcher (winpack)

This commit is contained in:
Alexander Alekhin 2018-11-15 22:43:23 +00:00
parent 3d68b5baa1
commit 5cf84c3765
3 changed files with 117 additions and 62 deletions

View File

@ -0,0 +1,114 @@
@ECHO OFF
SETLOCAL
SET SCRIPT_DIR=%~dp0
IF NOT EXIST "%SCRIPT_DIR%\..\..\build\setup_vars_opencv3.cmd" (
ECHO ERROR: OpenCV Winpack installation is required
pause
exit
)
:: Detect Python binary
python -V 2>nul
IF %ERRORLEVEL% EQU 0 (
SET PYTHON=python
GOTO :PYTHON_FOUND
)
CALL :QUERY_PYTHON 3.7
IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
CALL :QUERY_PYTHON 3.6
IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
CALL :QUERY_PYTHON 3.5
IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
CALL :QUERY_PYTHON 3.4
IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
CALL :QUERY_PYTHON 2.7
IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
GOTO :PYTHON_NOT_FOUND
:QUERY_PYTHON
SETLOCAL
SET PY_VERSION=%1
FOR /F "tokens=2*" %%A IN ('REG QUERY "HKCU\SOFTWARE\Python\PythonCore\%PY_VERSION%\InstallPath" /reg:64 /ve 2^>NUL ^| FIND "REG_SZ"') DO SET PYTHON_DIR=%%B
IF EXIST "%PYTHON_DIR%\python.exe" (
SET "PYTHON=%PYTHON_DIR%\python.exe"
GOTO :QUERY_PYTHON_FOUND
)
FOR /F "tokens=2*" %%A IN ('REG QUERY "HKLM\SOFTWARE\Python\PythonCore\%PY_VERSION%\InstallPath" /reg:64 /ve 2^>NUL ^| FIND "REG_SZ"') DO SET PYTHON_DIR=%%B
IF EXIST "%PYTHON_DIR%\python.exe" (
SET "PYTHON=%PYTHON_DIR%\python.exe"
GOTO :QUERY_PYTHON_FOUND
)
::echo Python %PY_VERSION% is not detected
ENDLOCAL
EXIT /B 1
:QUERY_PYTHON_FOUND
ECHO Found Python %PY_VERSION% from Windows Registry
ENDLOCAL & SET PYTHON=%PYTHON%
EXIT /B 0
IF exist C:\Python27-x64\python.exe (
SET PYTHON=C:\Python27-x64\python.exe
GOTO :PYTHON_FOUND
)
IF exist C:\Python27\python.exe (
SET PYTHON=C:\Python27\python.exe
GOTO :PYTHON_FOUND
)
:PYTHON_NOT_FOUND
ECHO ERROR: Python not found
IF NOT DEFINED OPENCV_BATCH_MODE ( pause )
EXIT /B
:PYTHON_FOUND
ECHO Using Python: %PYTHON%
:: Don't generate unnecessary .pyc cache files
SET PYTHONDONTWRITEBYTECODE=1
IF [%1]==[] goto rundemo
set SRC_FILENAME=%~dpnx1
echo SRC_FILENAME=%SRC_FILENAME%
call :dirname "%SRC_FILENAME%" SRC_DIR
call :dirname "%PYTHON%" PYTHON_DIR
PUSHD %SRC_DIR%
CALL "%SCRIPT_DIR%\..\..\build\setup_vars_opencv3.cmd"
ECHO Run: %*
%PYTHON% %*
SET result=%errorlevel%
IF %result% NEQ 0 (
IF NOT DEFINED OPENCV_BATCH_MODE (
SET "PATH=%PYTHON_DIR%;%PATH%"
echo ================================================================================
echo ** Type 'python sample_name.py' to run sample
echo ** Type 'exit' to exit from interactive shell and open the build directory
echo ================================================================================
cmd /k echo Current directory: %CD%
)
)
POPD
EXIT /B %result%
:rundemo
PUSHD "%SCRIPT_DIR%\python"
CALL "%SCRIPT_DIR%\..\..\build\setup_vars_opencv3.cmd"
%PYTHON% demo.py
SET result=%errorlevel%
IF %result% NEQ 0 (
IF NOT DEFINED OPENCV_BATCH_MODE ( pause )
)
POPD
EXIT /B %result%
:dirname file resultVar
setlocal
set _dir=%~dp1
set _dir=%_dir:~0,-1%
endlocal & set %2=%_dir%
EXIT /B 0

View File

@ -0,0 +1,3 @@
@echo off
call ..\_winpack_run_python_sample.cmd %*
exit /B

View File

@ -1,62 +0,0 @@
@echo off
setlocal enableDelayedExpansion
set SCRIPTDIR=%~dp0
if NOT exist %SCRIPTDIR%\..\..\..\build (
echo ERROR: OpenCV Winpack installation is required
pause
exit
)
:: Path to FFMPEG binary files
set PATH=%PATH%;%SCRIPTDIR%\..\..\..\build\bin\
:: Detect Python binary
python -V
if %ERRORLEVEL% EQU 0 (
set PYTHON=python
) else (
if exist C:\Python27-x64\python.exe (
set PYTHON=C:\Python27-x64\python.exe
) else (
if exist C:\Python27\python.exe (
set PYTHON=C:\Python27\python.exe
) else (
echo ERROR: Python not found
pause
exit
)
)
)
echo Using python: %PYTHON%
:: Detect python architecture
%PYTHON% -c "import platform; exit(64 if platform.architecture()[0] == '64bit' else 32)"
if %ERRORLEVEL% EQU 32 (
echo Detected: Python 32-bit
set PYTHONPATH=%CD%\..\..\..\build\python\2.7\x86
) else (
if %ERRORLEVEL% EQU 64 (
echo Detected: Python 64-bit
set PYTHONPATH=%CD%\..\..\..\build\python\2.7\x64
) else (
echo ERROR: Unknown python arch
pause
exit
)
)
:: Don't generate unnecessary .pyc cache files
set PYTHONDONTWRITEBYTECODE=1
if [%1]==[] goto rundemo
%PYTHON% %*
set result=%errorlevel%
IF %result% NEQ 0 (pause)
EXIT /B %result%
:rundemo
%PYTHON% demo.py
set result=%errorlevel%
IF %result% NEQ 0 (pause)
EXIT /B %result%