--- a/src/eric7/VirtualEnv/VirtualenvManager.py Fri Nov 24 12:11:49 2023 +0100 +++ b/src/eric7/VirtualEnv/VirtualenvManager.py Fri Nov 24 14:59:26 2023 +0100 @@ -123,6 +123,8 @@ is_global=True, ) + self.__cleanEnvironments() + self.__saveSettings() def __saveSettings(self): @@ -149,6 +151,25 @@ Preferences.syncPreferences() self.__loadSettings() + def __cleanEnvironments(self): + """ + Private method to delete all non-existent local environments. + """ + removed = False + + for venvName in list(self.__virtualEnvironments): + venvItem = self.__virtualEnvironments[venvName] + if not venvItem.is_remote: + # It is a local environment; check it is still valid. + venvPath = venvItem.path + if venvPath and not os.path.exists(venvPath): + del self.__virtualEnvironments[venvName] + removed = True + if removed: + self.__saveSettings() + self.virtualEnvironmentRemoved.emit() + self.virtualEnvironmentsListChanged.emit() + def getDefaultEnvironment(self): """ Public method to get the default virtual environment.