--- a/src/eric7/PipInterface/PipPackagesWidget.py Sun Mar 03 10:39:56 2024 +0100 +++ b/src/eric7/PipInterface/PipPackagesWidget.py Tue Apr 02 10:00:22 2024 +0200 @@ -1289,6 +1289,15 @@ self.tr("Generate Requirements..."), self.__generateRequirements ) self.__requirementsSubenu.addSeparator() + self.__installPyprojectAct = self.__requirementsSubenu.addAction( + self.tr("Install from 'pyproject.toml'"), + self.__installPyprojectDependencies, + ) + self.__uninstallPyprojectAct = self.__requirementsSubenu.addAction( + self.tr("Uninstall from 'pyproject.toml'"), + self.__uninstallPyprojectDependencies, + ) + self.__requirementsSubenu.addSeparator() self.__generateConstraintsAct = self.__requirementsSubenu.addAction( self.tr("Generate Constraints..."), self.__generateConstraints ) @@ -1518,6 +1527,26 @@ self.__freezeDialog.start(venvName) @pyqtSlot() + def __installPyprojectDependencies(self): + """ + Private slot to install packages as given in a 'pyproject.toml' file. + """ + venvName = self.environmentsComboBox.currentText() + if venvName: + self.__pip.installPyprojectDependencies(venvName) + self.on_refreshButton_clicked() + + @pyqtSlot() + def __uninstallPyprojectDependencies(self): + """ + Private slot to uninstall packages as given in a 'pyproject.toml' file. + """ + venvName = self.environmentsComboBox.currentText() + if venvName: + self.__pip.uninstallPyprojectDependencies(venvName) + self.on_refreshButton_clicked() + + @pyqtSlot() def __editUserConfiguration(self): """ Private slot to edit the user configuration.