RefactoringRope/RefactoringServer.py

changeset 269
02bf946efbdc
parent 267
009b18770d08
child 270
efc48da49a75
diff -r 9a58fbb3786e -r 02bf946efbdc RefactoringRope/RefactoringServer.py
--- a/RefactoringRope/RefactoringServer.py	Thu May 24 19:19:05 2018 +0200
+++ b/RefactoringRope/RefactoringServer.py	Wed Jun 20 18:52:38 2018 +0200
@@ -2063,16 +2063,39 @@
         ok = False
         
         if self.__projectLanguage.startswith("Python"):
-            # get interpreter from project first
-            interpreter = self.__e5project.getDebugProperty("INTERPRETER")
-            if not interpreter or not Utilities.isinpath(interpreter):
-                # get it from debugger settings second
-                if self.__projectLanguage == "Python2":
-                    interpreter = Preferences.getDebugger("PythonInterpreter")
-                elif self.__projectLanguage == "Python3":
-                    interpreter = Preferences.getDebugger("Python3Interpreter")
+            try:
+                # new code using virtual environments
+                # get virtual environment from project first
+                venvName = self.__e5project.getDebugProperty("VIRTUALENV")
+                if not venvName:
+                    # get it from debugger settings next
+                    if self.__projectLanguage == "Python2":
+                        # Python 2
+                        venvName = Preferences.getDebugger("Python2VirtualEnv")
+                    elif self.__projectLanguage == "Python3":
+                        # Python 3
+                        venvName = Preferences.getDebugger("Python3VirtualEnv")
+                    else:
+                        venvName = ""
+                if venvName:
+                    interpreter = e5App().getObject("VirtualEnvManager")\
+                        .getVirtualenvInterpreter(venvName)
                 else:
                     interpreter = ""
+            except KeyError:
+                # backward compatibility (eric <18.07)
+                # get interpreter from project first
+                interpreter = self.__e5project.getDebugProperty("INTERPRETER")
+                if not interpreter or not Utilities.isinpath(interpreter):
+                    # get it from debugger settings second
+                    if self.__projectLanguage == "Python2":
+                        interpreter = Preferences.getDebugger(
+                            "PythonInterpreter")
+                    elif self.__projectLanguage == "Python3":
+                        interpreter = Preferences.getDebugger(
+                            "Python3Interpreter")
+                    else:
+                        interpreter = ""
             if interpreter:
                 ok = self.__startRefactoringClient(interpreter)
                 if not ok:

eric ide

mercurial