PY-16846 Not able to create django project: could not find Dajngo installation under detected or added during creation interpreter

This commit is contained in:
Ekaterina Tuzova
2015-09-28 16:52:03 +03:00
parent bbaf394517
commit a6fbff6218
3 changed files with 20 additions and 7 deletions
@@ -33,6 +33,7 @@ public class PyActiveSdkModuleConfigurable extends ModuleAwareProjectConfigurabl
public PyActiveSdkModuleConfigurable(Project project) {
super(project, "Project Interpreter", "reference.settings.project.interpreter");
myProject = project;
PythonSdkUpdater.getInstance().clearAlreadyUpdated();
}
@NotNull
@@ -22,9 +22,9 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkAdditionalData;
import com.intellij.openapi.projectRoots.SdkModificator;
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil;
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
import com.intellij.openapi.util.Computable;
@@ -37,10 +37,7 @@ import com.intellij.util.NullableConsumer;
import com.jetbrains.python.configuration.PyConfigurableInterpreterList;
import com.jetbrains.python.newProject.PyNewProjectSettings;
import com.jetbrains.python.newProject.PythonProjectGenerator;
import com.jetbrains.python.sdk.PyDetectedSdk;
import com.jetbrains.python.sdk.PySdkService;
import com.jetbrains.python.sdk.PythonSdkAdditionalData;
import com.jetbrains.python.sdk.PythonSdkType;
import com.jetbrains.python.sdk.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -67,8 +64,14 @@ public class GenerateProjectCallback implements NullableConsumer<ProjectSettings
}
});
PySdkService.getInstance().solidifySdk(sdk);
sdk = SdkConfigurationUtil.setupSdk(ProjectJdkTable.getInstance().getAllJdks(), sdkHome, PythonSdkType.getInstance(), true, null,
null);
sdk = SdkConfigurationUtil.createAndAddSDK(sdkHome.getPath(), PythonSdkType.getInstance());
if (sdk != null) {
final SdkModificator modificator = sdk.getSdkModificator();
PythonSdkType.setupSdkPaths(sdk, project, null, modificator);
modificator.commitChanges();
PythonSdkUpdater.getInstance().markAlreadyUpdated(sdk.getHomePath());
}
model.addSdk(sdk);
settingsStep.setSdk(sdk);
try {
@@ -195,6 +195,7 @@ public class PythonSdkUpdater implements StartupActivity {
* Updates SDK based on sys.path and cleans legacy information up.
*/
private static void updateSdkPath(@NotNull PySdkUpdater sdkUpdater, @NotNull List<String> sysPath) {
if (getInstance().isAlreadyUpdated(sdkUpdater.getHomePath())) return;
addNewSysPathEntries(sdkUpdater, sysPath);
removeSourceRoots(sdkUpdater);
removeDuplicateClassRoots(sdkUpdater);
@@ -303,4 +304,12 @@ public class PythonSdkUpdater implements StartupActivity {
}
return false;
}
public void clearAlreadyUpdated() {
myAlreadyUpdated.clear();
}
public boolean isAlreadyUpdated(String path) {
return myAlreadyUpdated.contains(path);
}
}