From 34dad3aa792946ae07c60ebc8549e35aa70376eb Mon Sep 17 00:00:00 2001 From: Jon Evans <jon@craftyjon.com> Date: Wed, 1 Jan 2025 11:32:41 -0500 Subject: [PATCH] Implement searching for Python on Windows --- scripting/python_manager.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/scripting/python_manager.cpp b/scripting/python_manager.cpp index 112f18f4c0..774f72a582 100644 --- a/scripting/python_manager.cpp +++ b/scripting/python_manager.cpp @@ -106,8 +106,8 @@ wxString PYTHON_MANAGER::FindPythonInterpreter() #if defined( __WINDOWS__ ) wxFileName pythonExe = FindKicadFile( "python.exe" ); - if( pythonExe.IsFileExecutable() ) - return pythonExe.GetFullPath(); + //if( pythonExe.IsFileExecutable() ) + // return pythonExe.GetFullPath(); #elif defined( __WXMAC__ ) wxFileName pythonExe( PATHS::GetOSXKicadDataDir(), wxEmptyString ); pythonExe.RemoveLastDir(); @@ -125,13 +125,19 @@ wxString PYTHON_MANAGER::FindPythonInterpreter() // In case one is forced with cmake pythonExe.Assign( wxString::FromUTF8Unchecked( PYTHON_EXECUTABLE ) ); - if( pythonExe.IsFileExecutable() ) - return pythonExe.GetFullPath(); + //if( pythonExe.IsFileExecutable() ) + // return pythonExe.GetFullPath(); // Fall back on finding any Python in the user's path #ifdef _WIN32 - // TODO(JE) where + wxArrayString output; + + if( 0 == wxExecute( wxS( "where python.exe" ), output, wxEXEC_SYNC ) ) + { + if( !output.IsEmpty() ) + return output[0]; + } #else wxArrayString output;