diff --git a/python/services/system-python/src/com/intellij/python/community/services/systemPython/impl/providers/MacSystemPythonProvider.kt b/python/services/system-python/src/com/intellij/python/community/services/systemPython/impl/providers/MacSystemPythonProvider.kt index 15e67c838cdf..f1ee51e49423 100644 --- a/python/services/system-python/src/com/intellij/python/community/services/systemPython/impl/providers/MacSystemPythonProvider.kt +++ b/python/services/system-python/src/com/intellij/python/community/services/systemPython/impl/providers/MacSystemPythonProvider.kt @@ -7,6 +7,7 @@ import com.intellij.python.community.services.systemPython.SystemPythonProvider import com.jetbrains.python.PyToolUIInfo import com.jetbrains.python.PythonBinary import com.jetbrains.python.errorProcessing.PyResult +import com.jetbrains.python.sdk.flavors.MacPythonSdkFlavor import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.nio.file.Path @@ -15,11 +16,14 @@ import java.nio.file.Path internal class MacSystemPythonProvider : SystemPythonProvider { private val directories = listOf( - Path.of("/usr/bin"), Path.of("/usr/local/bin"), - Path.of("/usr/local/Cellar/python"), - Path.of("/Library/Frameworks/Python.framework/Versions"), - Path.of("/System/Library/Frameworks/Python.framework/Versions"), + Path.of("/usr/local/Cellar/python/bin"), + Path.of("/Library/Frameworks/Python.framework/Versions/bin"), + Path.of("/System/Library/Frameworks/Python.framework/Versions/bin"), + ) + + private val xcodePythonDirectories = listOf( + Path.of("/usr/bin"), ) // Patterns to match Python executable filenames @@ -35,8 +39,15 @@ internal class MacSystemPythonProvider : SystemPythonProvider { return PyResult.success(emptySet()) } + val directoriesToSearch = buildList { + addAll(directories) + if (MacPythonSdkFlavor.areCommandLineDeveloperToolsAvailable()) { + addAll(xcodePythonDirectories) + } + } + val pythons = withContext(Dispatchers.IO) { - return@withContext collectPythonsInPaths(directories, names) + return@withContext collectPythonsInPaths(directoriesToSearch, names) } return PyResult.success(pythons)