--- a/RefactoringRope/RefactoringServer.py Sun Oct 28 12:30:59 2018 +0100 +++ b/RefactoringRope/RefactoringServer.py Sat Nov 03 18:21:20 2018 +0100 @@ -2064,6 +2064,7 @@ ok = False if self.__projectLanguage.startswith("Python"): + clientEnv = os.environ.copy() try: # new code using virtual environments venvManager = e5App().getObject("VirtualEnvManager") @@ -2097,6 +2098,20 @@ if venvName: interpreter = \ venvManager.getVirtualenvInterpreter(venvName) + + try: + execPath = venvManager.getVirtualenvExecPath(venvName) + except AttributeError: + # eric6 < 18.12 + execPath = "" + + # build a suitable environment + if execPath: + if "PATH" in clientEnv: + clientEnv["PATH"] = os.pathsep.join( + [execPath, clientEnv["PATH"]]) + else: + clientEnv["PATH"] = execPath else: interpreter = "" except KeyError: @@ -2114,7 +2129,7 @@ else: interpreter = "" if interpreter: - ok = self.__startRefactoringClient(interpreter) + ok = self.__startRefactoringClient(interpreter, clientEnv) if not ok: self.__ui.appendToStderr(self.tr( "Project language '{0}' is not supported because" @@ -2286,19 +2301,23 @@ E5MessageBox.StandardButtons( E5MessageBox.Ok)) - def __startRefactoringClient(self, interpreter): + def __startRefactoringClient(self, interpreter, clientEnv): """ Private method to start the refactoring client. @param interpreter interpreter to be used for the refactoring client @type str + @param clientEnv dictionary with environment variables to run the + interpreter with + @type dict @return flag indicating a successful client start @rtype bool """ if interpreter: client = os.path.join(os.path.dirname(__file__), "RefactoringClient.py") - ok = self.startClient(interpreter, client, [self.__projectpath]) + ok = self.startClient(interpreter, client, [self.__projectpath], + environment=clientEnv) else: ok = False return ok