@ -38,7 +38,7 @@ if(NOT ${found})
set ( PYTHON_EXECUTABLE "${${executable}}" )
endif ( )
if ( WIN32 AND NOT ${ executable } )
if ( WIN32 AND NOT ${ executable } AND OPENCV_PYTHON_PREFER_WIN32_REGISTRY ) # d e p r e c a t e d
# s e a r c h f o r e x e c u t a b l e w i t h t h e s a m e b i t n e s s a s r e s u l t i n g b i n a r i e s
# s t a n d a r d F i n d P y t h o n I n t e r p a l w a y s p r e f e r s e x e c u t a b l e f r o m s y s t e m p a t h
# t h i s i s r e a l l y i m p o r t a n t b e c a u s e w e a r e u s i n g t h e i n t e r p r e t e r f o r n u m p y s e a r c h a n d f o r c h o o s i n g t h e i n s t a l l l o c a t i o n
@ -53,16 +53,47 @@ if(NOT ${found})
endforeach ( )
endif ( )
string ( REGEX MATCH "^[0-9]+" _preferred_version_major "${preferred_version}" )
find_host_package ( PythonInterp "${preferred_version}" )
if ( NOT PYTHONINTERP_FOUND )
if ( preferred_version )
set ( __python_package_version "${preferred_version} EXACT" )
find_host_package ( PythonInterp "${preferred_version}" EXACT )
if ( NOT PYTHONINTERP_FOUND )
message ( STATUS "Python is not found: ${preferred_version} EXACT" )
endif ( )
else ( )
set ( __python_package_version "${min_version}" )
find_host_package ( PythonInterp "${min_version}" )
endif ( )
string ( REGEX MATCH "^[0-9]+" _python_version_major "${min_version}" )
if ( PYTHONINTERP_FOUND )
# C h e c k i f p y t h o n m a j o r v e r s i o n i s c o r r e c t
if ( "${_preferred_version_major}" STREQUAL "" OR "${_preferred_version_major}" STREQUAL "${PYTHON_VERSION_MAJOR}" )
if ( NOT "${_python_version_major}" STREQUAL "${PYTHON_VERSION_MAJOR}"
A N D N O T D E F I N E D $ { e x e c u t a b l e }
)
if ( NOT OPENCV_SKIP_PYTHON_WARNING )
message ( WARNING "CMake's 'find_host_package(PythonInterp ${__python_package_version})' founds wrong Python version:\n"
" P Y T H O N _ E X E C U T A B L E = $ { P Y T H O N _ E X E C U T A B L E } \ n "
" P Y T H O N _ V E R S I O N _ S T R I N G = $ { P Y T H O N _ V E R S I O N _ S T R I N G } \ n "
" C o n s i d e r s p e c i f y ' $ { e x e c u t a b l e } ' v a r i a b l e v i a C M a k e c o m m a n d l i n e o r e n v i r o n m e n t v a r i a b l e s \ n " )
endif ( )
ocv_clear_vars ( PYTHONINTERP_FOUND PYTHON_EXECUTABLE PYTHON_VERSION_STRING PYTHON_VERSION_MAJOR PYTHON_VERSION_MINOR PYTHON_VERSION_PATCH )
if ( NOT CMAKE_VERSION VERSION_LESS "3.12" )
if ( _python_version_major STREQUAL "2" )
set ( __PYTHON_PREFIX Python2 )
else ( )
set ( __PYTHON_PREFIX Python3 )
endif ( )
find_host_package ( ${ __PYTHON_PREFIX } "${preferred_version}" COMPONENTS Interpreter )
if ( ${ __PYTHON_PREFIX } _EXECUTABLE )
set ( PYTHON_EXECUTABLE "${${__PYTHON_PREFIX}_EXECUTABLE}" )
find_host_package ( PythonInterp "${preferred_version}" ) # P o p u l a t e o t h e r v a r i a b l e s
endif ( )
else ( )
message ( STATUS "Consider using CMake 3.12+ for better Python support" )
endif ( )
endif ( )
if ( PYTHONINTERP_FOUND AND "${_python_version_major}" STREQUAL "${PYTHON_VERSION_MAJOR}" )
# C o p y o u t p u t s
set ( _found ${ PYTHONINTERP_FOUND } )
set ( _executable ${ PYTHON_EXECUTABLE } )
@ -235,7 +266,7 @@ if(OPENCV_PYTHON_SKIP_DETECTION)
return ( )
endif ( )
find_python ( 2.7 "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR
find_python ( "" "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR
P Y T H O N 2 I N T E R P _ F O U N D P Y T H O N 2 _ E X E C U T A B L E P Y T H O N 2 _ V E R S I O N _ S T R I N G
P Y T H O N 2 _ V E R S I O N _ M A J O R P Y T H O N 2 _ V E R S I O N _ M I N O R P Y T H O N 2 L I B S _ F O U N D
P Y T H O N 2 L I B S _ V E R S I O N _ S T R I N G P Y T H O N 2 _ L I B R A R I E S P Y T H O N 2 _ L I B R A R Y
@ -243,7 +274,8 @@ find_python(2.7 "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR
P Y T H O N 2 _ I N C L U D E _ D I R P Y T H O N 2 _ I N C L U D E _ D I R 2 P Y T H O N 2 _ P A C K A G E S _ P A T H
P Y T H O N 2 _ N U M P Y _ I N C L U D E _ D I R S P Y T H O N 2 _ N U M P Y _ V E R S I O N )
find_python ( 3.4 "${MIN_VER_PYTHON3}" PYTHON3_LIBRARY PYTHON3_INCLUDE_DIR
option ( OPENCV_PYTHON3_VERSION "Python3 version" "" )
find_python ( "${OPENCV_PYTHON3_VERSION}" "${MIN_VER_PYTHON3}" PYTHON3_LIBRARY PYTHON3_INCLUDE_DIR
P Y T H O N 3 I N T E R P _ F O U N D P Y T H O N 3 _ E X E C U T A B L E P Y T H O N 3 _ V E R S I O N _ S T R I N G
P Y T H O N 3 _ V E R S I O N _ M A J O R P Y T H O N 3 _ V E R S I O N _ M I N O R P Y T H O N 3 L I B S _ F O U N D
P Y T H O N 3 L I B S _ V E R S I O N _ S T R I N G P Y T H O N 3 _ L I B R A R I E S P Y T H O N 3 _ L I B R A R Y