'PATH' environment variable should be passed to the script after virtual env activati...
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Wed, 9 Nov 2016 17:44:27 +0000 (18:44 +0100)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Wed, 9 Nov 2016 17:44:27 +0000 (18:44 +0100)
python/src/com/jetbrains/python/run/PythonCommandLineState.java

index fdc8a93c37737c5242396384a59fe87d6c646018..d3738f9f6fb97911aadae0c1694ebbb1ff1db9b8 100644 (file)
@@ -254,7 +254,7 @@ public abstract class PythonCommandLineState extends CommandLineState {
     commandLine.withCharset(EncodingProjectManager.getInstance(project).getDefaultCharset());
 
     createStandardGroups(commandLine);
-    
+
     initEnvironment(project, commandLine, config, isDebug);
 
     setRunnerPath(project, commandLine, config);
@@ -293,7 +293,7 @@ public abstract class PythonCommandLineState extends CommandLineState {
 
     addCommonEnvironmentVariables(getInterpreterPath(project, myConfig), env);
 
-    setupVirtualEnvVariables(env, myConfig.getSdkHome());
+    setupVirtualEnvVariables(myConfig, env, myConfig.getSdkHome());
 
     commandLine.getEnvironment().clear();
     commandLine.getEnvironment().putAll(env);
@@ -303,12 +303,19 @@ public abstract class PythonCommandLineState extends CommandLineState {
     buildPythonPath(project, commandLine, myConfig, isDebug);
   }
 
-  private static void setupVirtualEnvVariables(Map<String, String> env, String sdkHome) {
+  private static void setupVirtualEnvVariables(PythonRunParams myConfig, Map<String, String> env, String sdkHome) {
     if (PythonSdkType.isVirtualEnv(sdkHome)) {
       PyVirtualEnvReader reader = new PyVirtualEnvReader(sdkHome);
       if (reader.getActivate() != null) {
         try {
           env.putAll(reader.readShellEnv());
+
+          for (Map.Entry<String, String> e : myConfig.getEnvs().entrySet()) {
+            if ("PATH".equals(e.getKey())) {
+              env.put(e.getKey(), PythonEnvUtil.appendToPathEnvVar(env.get("PATH"), e.getValue()));
+            }
+          }
+
         }
         catch (Exception e) {
           LOG.error("Couldn't read virtualenv variables", e);
@@ -516,7 +523,7 @@ public abstract class PythonCommandLineState extends CommandLineState {
       Module module = getModule(project, config);
 
       Sdk sdk = PythonSdkType.findPythonSdk(module);
-      
+
       if (sdk != null) {
         sdkHome = sdk.getHomePath();
       }