src/eric7/VirtualEnv/VirtualenvManager.py

branch
eric7
changeset 10340
548b4c7f410e
parent 10204
9a8a0bdedd80
child 10351
1f9bafeff96c
diff -r 446d22fa1aea -r 548b4c7f410e src/eric7/VirtualEnv/VirtualenvManager.py
--- 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.

eric ide

mercurial