src/eric7/VirtualEnv/VirtualenvManager.py

branch
eric7
changeset 10351
1f9bafeff96c
parent 10340
548b4c7f410e
child 10373
093dcebe5ecb
--- a/src/eric7/VirtualEnv/VirtualenvManager.py	Wed Nov 29 11:33:32 2023 +0100
+++ b/src/eric7/VirtualEnv/VirtualenvManager.py	Wed Nov 29 14:27:25 2023 +0100
@@ -20,7 +20,7 @@
 from eric7 import Preferences
 from eric7.EricWidgets import EricMessageBox
 from eric7.EricWidgets.EricApplication import ericApp
-from eric7.SystemUtilities import FileSystemUtilities, PythonUtilities
+from eric7.SystemUtilities import FileSystemUtilities, OSUtilities, PythonUtilities
 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
 
 from .VirtualenvMeta import VirtualenvMetaData
@@ -479,6 +479,33 @@
                 self.virtualEnvironmentRemoved.emit()
                 self.virtualEnvironmentsListChanged.emit()
 
+    def searchUnregisteredInterpreters(self):
+        """
+        Public method to search for unregistered Python interpreters.
+
+        @return list of unregistered interpreters
+        @rtype list of str
+        """
+        interpreters = []
+        baseDir = self.getVirtualEnvironmentsBaseDir()
+        if not baseDir:
+            # search in home directory, if no environments base directory is defined
+            baseDir = OSUtilities.getHomeDir()
+        environments = [
+            os.path.join(baseDir, d)
+            for d in os.listdir(baseDir)
+            if os.path.isdir(os.path.join(baseDir, d))
+        ]
+
+        interpreters = PythonUtilities.searchInterpreters()
+        if environments:
+            interpreters += PythonUtilities.searchInterpreters(environments)
+
+        interpreters = {
+            i for i in interpreters if not self.environmentForInterpreter(i)[0]
+        }  # filter the list into a set to make the remaining ones unique
+        return list(interpreters)
+
     def getEnvironmentEntries(self):
         """
         Public method to get a list of the defined virtual environment entries.

eric ide

mercurial