--- 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: