diff -r 9a58fbb3786e -r 02bf946efbdc RefactoringRope/CodeAssistServer.py --- a/RefactoringRope/CodeAssistServer.py Thu May 24 19:19:05 2018 +0200 +++ b/RefactoringRope/CodeAssistServer.py Wed Jun 20 18:52:38 2018 +0200 @@ -525,14 +525,31 @@ ok = idString in self.connectionNames() if not ok: # client is not running - if idString == "Python2": - # Python 2 - interpreter = Preferences.getDebugger("PythonInterpreter") - ok = self.__startCodeAssistClient(interpreter, "Python2") - elif idString == "Python3": - # Python 3 - interpreter = Preferences.getDebugger("Python3Interpreter") - ok = self.__startCodeAssistClient(interpreter, "Python3") + try: + # new code using virtual environments + if idString == "Python2": + # Python 2 + venvName = Preferences.getDebugger("Python2VirtualEnv") + elif idString == "Python3": + # Python 3 + venvName = Preferences.getDebugger("Python3VirtualEnv") + else: + venvName = "" + if venvName: + interpreter = e5App().getObject("VirtualEnvManager")\ + .getVirtualenvInterpreter(venvName) + except KeyError: + # backward compatibility (eric <18.07) + if idString == "Python2": + # Python 2 + interpreter = Preferences.getDebugger("PythonInterpreter") + elif idString == "Python3": + # Python 3 + interpreter = Preferences.getDebugger("Python3Interpreter") + else: + interpreter = "" + if interpreter: + ok = self.__startCodeAssistClient(interpreter, idString) return ok @pyqtSlot()