RefactoringRope/RefactoringServer.py

changeset 285
247d62c682dc
parent 280
45f0a0511acd
child 287
09afe26b734c
equal deleted inserted replaced
284:18f32c079abc 285:247d62c682dc
2062 self.__projectLanguage = self.__e5project.getProjectLanguage() 2062 self.__projectLanguage = self.__e5project.getProjectLanguage()
2063 2063
2064 ok = False 2064 ok = False
2065 2065
2066 if self.__projectLanguage.startswith("Python"): 2066 if self.__projectLanguage.startswith("Python"):
2067 clientEnv = os.environ.copy()
2067 try: 2068 try:
2068 # new code using virtual environments 2069 # new code using virtual environments
2069 venvManager = e5App().getObject("VirtualEnvManager") 2070 venvManager = e5App().getObject("VirtualEnvManager")
2070 2071
2071 # get virtual environment from project first 2072 # get virtual environment from project first
2095 else: 2096 else:
2096 venvName = "" 2097 venvName = ""
2097 if venvName: 2098 if venvName:
2098 interpreter = \ 2099 interpreter = \
2099 venvManager.getVirtualenvInterpreter(venvName) 2100 venvManager.getVirtualenvInterpreter(venvName)
2101
2102 try:
2103 execPath = venvManager.getVirtualenvExecPath(venvName)
2104 except AttributeError:
2105 # eric6 < 18.12
2106 execPath = ""
2107
2108 # build a suitable environment
2109 if execPath:
2110 if "PATH" in clientEnv:
2111 clientEnv["PATH"] = os.pathsep.join(
2112 [execPath, clientEnv["PATH"]])
2113 else:
2114 clientEnv["PATH"] = execPath
2100 else: 2115 else:
2101 interpreter = "" 2116 interpreter = ""
2102 except KeyError: 2117 except KeyError:
2103 # backward compatibility (eric < 18.07) 2118 # backward compatibility (eric < 18.07)
2104 # get interpreter from project first 2119 # get interpreter from project first
2112 interpreter = Preferences.getDebugger( 2127 interpreter = Preferences.getDebugger(
2113 "Python3Interpreter") 2128 "Python3Interpreter")
2114 else: 2129 else:
2115 interpreter = "" 2130 interpreter = ""
2116 if interpreter: 2131 if interpreter:
2117 ok = self.__startRefactoringClient(interpreter) 2132 ok = self.__startRefactoringClient(interpreter, clientEnv)
2118 if not ok: 2133 if not ok:
2119 self.__ui.appendToStderr(self.tr( 2134 self.__ui.appendToStderr(self.tr(
2120 "Project language '{0}' is not supported because" 2135 "Project language '{0}' is not supported because"
2121 " the configured interpreter could not be started." 2136 " the configured interpreter could not be started."
2122 " Refactoring is disabled." 2137 " Refactoring is disabled."
2284 .replace("\n", "<br/>").replace("\r", "<br/>"), 2299 .replace("\n", "<br/>").replace("\r", "<br/>"),
2285 ), 2300 ),
2286 E5MessageBox.StandardButtons( 2301 E5MessageBox.StandardButtons(
2287 E5MessageBox.Ok)) 2302 E5MessageBox.Ok))
2288 2303
2289 def __startRefactoringClient(self, interpreter): 2304 def __startRefactoringClient(self, interpreter, clientEnv):
2290 """ 2305 """
2291 Private method to start the refactoring client. 2306 Private method to start the refactoring client.
2292 2307
2293 @param interpreter interpreter to be used for the refactoring client 2308 @param interpreter interpreter to be used for the refactoring client
2294 @type str 2309 @type str
2310 @param clientEnv dictionary with environment variables to run the
2311 interpreter with
2312 @type dict
2295 @return flag indicating a successful client start 2313 @return flag indicating a successful client start
2296 @rtype bool 2314 @rtype bool
2297 """ 2315 """
2298 if interpreter: 2316 if interpreter:
2299 client = os.path.join(os.path.dirname(__file__), 2317 client = os.path.join(os.path.dirname(__file__),
2300 "RefactoringClient.py") 2318 "RefactoringClient.py")
2301 ok = self.startClient(interpreter, client, [self.__projectpath]) 2319 ok = self.startClient(interpreter, client, [self.__projectpath],
2320 environment=clientEnv)
2302 else: 2321 else:
2303 ok = False 2322 ok = False
2304 return ok 2323 return ok
2305 2324
2306 ######################################################################### 2325 #########################################################################

eric ide

mercurial