Fri, 27 Sep 2024 10:59:59 +0200
Fixed an issue in the virtual env manager package when used in the standalone application.
src/eric7/VirtualEnv/VirtualenvAddEditDialog.py | file | annotate | diff | comparison | revisions | |
src/eric7/VirtualEnv/VirtualenvManager.py | file | annotate | diff | comparison | revisions |
--- a/src/eric7/VirtualEnv/VirtualenvAddEditDialog.py Fri Sep 27 10:28:32 2024 +0200 +++ b/src/eric7/VirtualEnv/VirtualenvAddEditDialog.py Fri Sep 27 10:59:59 2024 +0200 @@ -51,8 +51,12 @@ self.__venvName = "" if metadata is None else metadata.name self.__manager = manager self.__editMode = bool(self.__venvName) - self.__serverInterface = ericApp().getObject("EricServer") - self.__fsInterface = self.__serverInterface.getServiceInterface("FileSystem") + try: + self.__serverInterface = ericApp().getObject("EricServer") + self.__fsInterface = self.__serverInterface.getServiceInterface("FileSystem") + except KeyError: + self.__serverInterface = None + self.__fsInterface = None if self.__editMode: self.setWindowTitle(self.tr("Edit Virtual Environment")) @@ -63,13 +67,19 @@ if not self.__envBaseDir: self.__envBaseDir = OSUtilities.getHomeDir() - self.serverRadioButton.setEnabled(self.__serverInterface.isServerConnected()) + self.serverRadioButton.setEnabled( + self.__serverInterface is not None + and self.__serverInterface.isServerConnected() + ) self.targetDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) self.targetDirectoryPicker.setWindowTitle( self.tr("Virtualenv Target Directory") ) - if self.__serverInterface.isServerConnected(): + if ( + self.__serverInterface is not None + and self.__serverInterface.isServerConnected() + ): self.targetDirectoryPicker.setRemote( metadata.is_eric_server if metadata else False ) @@ -78,7 +88,10 @@ self.pythonExecPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) self.pythonExecPicker.setWindowTitle(self.tr("Python Interpreter")) - if self.__serverInterface.isServerConnected(): + if ( + self.__serverInterface is not None + and self.__serverInterface.isServerConnected() + ): self.pythonExecPicker.setRemote( metadata.is_eric_server if metadata else False ) @@ -163,6 +176,7 @@ and ( ( self.serverRadioButton.isChecked() + and self.__fsInterface is not None and self.__fsInterface.exists(self.targetDirectoryPicker.text()) ) or ( @@ -177,6 +191,7 @@ and ( ( self.serverRadioButton.isChecked() + and self.__fsInterface is not None and self.__fsInterface.access( self.pythonExecPicker.text(), "execute" ) @@ -283,7 +298,10 @@ @param checked state of the radio button @type bool """ - if self.__serverInterface.isServerConnected(): + if ( + self.__serverInterface is not None + and self.__serverInterface.isServerConnected() + ): self.targetDirectoryPicker.setRemote(checked) self.pythonExecPicker.setRemote(checked) self.serverLineEdit.setText(
--- a/src/eric7/VirtualEnv/VirtualenvManager.py Fri Sep 27 10:28:32 2024 +0200 +++ b/src/eric7/VirtualEnv/VirtualenvManager.py Fri Sep 27 10:59:59 2024 +0200 @@ -166,17 +166,19 @@ venvPath = venvItem.path if venvPath: if venvItem.is_eric_server: - # It is an eric-ide server environment; check it is still valid. - ericServer = ericApp().getObject("EricServer") - if ( - ericServer.isServerConnected() - and ericServer.getHost() == venvItem.eric_server - and not ericServer.getServiceInterface("FileSystem").exists( - venvPath - ) - ): - del self.__virtualEnvironments[venvName] - removed = True + with contextlib.suppress(KeyError): + # It is an eric-ide server environment; check it is + # still valid. + ericServer = ericApp().getObject("EricServer") + if ( + ericServer.isServerConnected() + and ericServer.getHost() == venvItem.eric_server + and not ericServer.getServiceInterface( + "FileSystem" + ).exists(venvPath) + ): + del self.__virtualEnvironments[venvName] + removed = True else: # It is a local environment; check it is still valid. if not os.path.exists(venvPath):