From 835e019be05b1c14cff020a5ad88f012eb5d35a2 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Wed, 21 Jun 2017 20:18:58 +0300 Subject: [PATCH] Jupyter Notebook: instal jupyter notebook quickFix for run configurations --- .../ipnb/run/IpnbRunConfiguration.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/run/IpnbRunConfiguration.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/run/IpnbRunConfiguration.java index c90acd8ba248..bcc1bc1b7490 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/run/IpnbRunConfiguration.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/run/IpnbRunConfiguration.java @@ -10,10 +10,14 @@ import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; +import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.JDOMExternalizerUtil; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.util.text.StringUtil; +import com.jetbrains.python.packaging.PyPackage; +import com.jetbrains.python.packaging.PyPackageManager; +import com.jetbrains.python.packaging.PyPackageUtil; import com.jetbrains.python.run.AbstractPythonRunConfiguration; import com.jetbrains.python.run.DebugAwareConfiguration; import org.jdom.Element; @@ -21,6 +25,8 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + public class IpnbRunConfiguration extends AbstractPythonRunConfiguration implements DebugAwareConfiguration { @NonNls private static final String ATTR_ADDITIONAL_OPTIONS = "additionalOptions"; @@ -49,7 +55,7 @@ public class IpnbRunConfiguration extends AbstractPythonRunConfiguration 0 ? port : null; } - public void writeExternal(Element element) throws WriteExternalException { + public void writeExternal(@NotNull Element element) throws WriteExternalException { super.writeExternal(element); JDOMExternalizerUtil.writeField(element, ATTR_ADDITIONAL_OPTIONS, myAdditionalOptions); JDOMExternalizerUtil.writeField(element, ATTR_HOST, myHost); @@ -77,6 +83,21 @@ public class IpnbRunConfiguration extends AbstractPythonRunConfiguration packages = PyPackageManager.getInstance(sdk).getPackages(); + final PyPackage ipythonPackage = packages != null ? PyPackageUtil.findPackage(packages, "ipython") : null; + final PyPackage jupyterPackage = packages != null ? PyPackageUtil.findPackage(packages, "jupyter") : null; + if (ipythonPackage == null && jupyterPackage == null) { + throw new RuntimeConfigurationError("Install Jupyter Notebook to the interpreter of the current project.", + () -> { + try { + PyPackageManager.getInstance(sdk).install("jupyter"); + } + catch (ExecutionException ignored) { + } + }); + } } public String getAdditionalOptions() {