--- a/VirtualEnv/VirtualenvManager.py Sun Feb 03 16:31:53 2019 +0100 +++ b/VirtualEnv/VirtualenvManager.py Sun Feb 03 16:59:36 2019 +0100 @@ -19,9 +19,9 @@ from PyQt5.QtWidgets import QDialog from E5Gui import E5MessageBox +from E5Gui.E5Application import e5App import Preferences -import Utilities class VirtualenvManager(QObject): @@ -148,19 +148,24 @@ dlg = VirtualenvConfigurationDialog() if dlg.exec_() == QDialog.Accepted: resultDict = dlg.getData() -## (pyvenv, args, name, openTarget, createLog, createScript, -## targetDir, interpreter) = dlg.getData() if resultDict["envType"] == "conda": - from CondaInterface.CondaExecDialog import CondaExecDialog - dia = CondaExecDialog(resultDict, self) + # create the conda environment + conda = e5App().getObject("Conda") + ok, prefix, interpreter = conda.createCondaEnvironment( + resultDict["arguments"]) + if ok and "--dry-run" not in resultDict["arguments"]: + self.addVirtualEnv(resultDict["logicalName"], + prefix, + venvInterpreter=interpreter, + isConda=True) else: # now do the call from .VirtualenvExecDialog import VirtualenvExecDialog dia = VirtualenvExecDialog(resultDict, self) - dia.show() - dia.start(resultDict["arguments"]) - dia.exec_() + dia.show() + dia.start(resultDict["arguments"]) + dia.exec_() def addVirtualEnv(self, venvName, venvDirectory, venvInterpreter="", venvVariant=3, isGlobal=False, isConda=False, @@ -208,9 +213,6 @@ dlg = VirtualenvInterpreterSelectionDialog(venvName, venvDirectory) if dlg.exec_() == QDialog.Accepted: venvInterpreter, venvVariant = dlg.getData() - if not Utilities.startswithPath(venvInterpreter, - venvDirectory): - isGlobal = True if venvInterpreter: self.__virtualEnvironments[venvName] = { @@ -337,9 +339,17 @@ if dlg.exec_() == QDialog.Accepted: for venvName in venvNames: if self.__isEnvironmentDeleteable(venvName): - shutil.rmtree( - self.__virtualEnvironments[venvName]["path"], True) - del self.__virtualEnvironments[venvName] + if self.isCondaEnvironment(venvName): + conda = e5App().getObject("Conda") + path = self.__virtualEnvironments[venvName]["path"] + res = conda.removeCondaEnvironment(prefix=path) + if res: + del self.__virtualEnvironments[venvName] + else: + shutil.rmtree( + self.__virtualEnvironments[venvName]["path"], + True) + del self.__virtualEnvironments[venvName] self.__saveSettings()