eric7/PipInterface/PipFreezeDialog.py

branch
eric7
changeset 8976
ca442cd49b9e
parent 8881
54e42bc2437a
--- a/eric7/PipInterface/PipFreezeDialog.py	Sun Mar 13 12:46:57 2022 +0100
+++ b/eric7/PipInterface/PipFreezeDialog.py	Sun Mar 13 15:20:26 2022 +0100
@@ -66,13 +66,17 @@
         """
         e.accept()
     
-    @pyqtSlot(bool)
-    def on_localCheckBox_clicked(self, checked):
+    @pyqtSlot()
+    def on_localCheckBox_clicked(self):
         """
         Private slot handling the switching of the local mode.
-        
-        @param checked state of the local check box
-        @type bool
+        """
+        self.__refresh()
+    
+    @pyqtSlot()
+    def on_userCheckBox_clicked(self):
+        """
+        Private slot handling the switching of the user-site mode.
         """
         self.__refresh()
     
@@ -135,29 +139,25 @@
         self.__requirementsAvailable = False
         self.__environmentName = venvName
         
-        interpreter = self.__pip.getVirtualenvInterpreter(venvName)
-        if not interpreter:
-            return
-        
-        args = ["-m", "pip", "freeze"]
-        if self.localCheckBox.isChecked():
-            args.append("--local")
-        if self.requirementsFilePicker.text():
-            fileName = Utilities.toNativeSeparators(
-                self.requirementsFilePicker.text())
-            if os.path.exists(fileName):
-                args.append("--requirement")
-                args.append(fileName)
+        fileName = (
+            Utilities.toNativeSeparators(self.requirementsFilePicker.text())
+            if self.requirementsFilePicker.text() else
+            ""
+        )
         
         with EricOverrideCursor():
-            success, output = self.__pip.runProcess(args, interpreter)
+            specifiers = self.__pip.getFrozenPackages(
+                venvName, localPackages=self.localCheckBox.isChecked(),
+                usersite=self.userCheckBox.isChecked(), requirement=fileName)
             
-            if success:
-                self.requirementsEdit.setPlainText(output)
+            if specifiers:
+                self.requirementsEdit.setPlainText(
+                    "\n".join(specifiers) + "\n")
                 self.__requirementsAvailable = True
             else:
-                self.requirementsEdit.setPlainText(
-                    self.tr("No output generated by 'pip freeze'."))
+                self.requirementsEdit.setPlainText(self.tr(
+                    "No package specifiers generated by 'pip freeze'.")
+                )
         
         self.__updateButtons()
         

eric ide

mercurial