diff --git a/python/ide/src/com/jetbrains/python/newProject/actions/AbstractProjectSettingsStep.java b/python/ide/src/com/jetbrains/python/newProject/actions/AbstractProjectSettingsStep.java index 04f81871c47a..a2fe4ebf54bd 100644 --- a/python/ide/src/com/jetbrains/python/newProject/actions/AbstractProjectSettingsStep.java +++ b/python/ide/src/com/jetbrains/python/newProject/actions/AbstractProjectSettingsStep.java @@ -272,14 +272,21 @@ abstract public class AbstractProjectSettingsStep extends AbstractActionWithPane final PyPackageManagerImpl packageManager = (PyPackageManagerImpl)PyPackageManager.getInstance(sdk); final boolean onlyWithCache = PythonSdkFlavor.getFlavor(sdk) instanceof JythonSdkFlavor || PythonSdkFlavor.getFlavor(sdk) instanceof PyPySdkFlavor; + String warningText = frameworkName + " will be installed on selected interpreter"; try { if (onlyWithCache && packageManager.cacheIsNotNull() || !onlyWithCache) { final PyPackage pip = packageManager.findInstalledPackage("pip"); - myInstallFramework = pip != null; - setWarningText(frameworkName + " will be installed on selected interpreter"); + myInstallFramework = true; + if (pip == null) { + warningText = "pip and " + warningText; + } + setWarningText(warningText); } } catch (PyExternalProcessException ignored) { + myInstallFramework = true; + warningText = "pip and " + warningText; + setWarningText(warningText); } if (!myInstallFramework) { setErrorText("No " + frameworkName + " support installed in selected interpreter"); diff --git a/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java b/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java index 6058f265cf90..359e497f21c8 100644 --- a/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java +++ b/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java @@ -425,6 +425,21 @@ public class PyPackageManagerImpl extends PyPackageManager { @Override public void install(String requirementString) throws PyExternalProcessException { + boolean hasSetuptools = false; + boolean hasPip = false; + try { + hasSetuptools = findInstalledPackage(SETUPTOOLS) != null; + } + catch (PyExternalProcessException ignored) { + } + try { + hasPip = findInstalledPackage(PIP) != null; + } + catch (PyExternalProcessException ignored) { + } + + if (!hasSetuptools) installManagement(SETUPTOOLS); + if (!hasPip) installManagement(PIP); install(Collections.singletonList(PyRequirement.fromString(requirementString)), Collections.emptyList()); }