diff -r 62019277dd0a -r 125166c6b66c src/eric7/PipInterface/PipPackagesWidget.py --- a/src/eric7/PipInterface/PipPackagesWidget.py Sun May 28 18:04:11 2023 +0200 +++ b/src/eric7/PipInterface/PipPackagesWidget.py Mon May 29 16:18:38 2023 +0200 @@ -177,8 +177,8 @@ @param pip reference to the global pip interface @type Pip - @param parent reference to the parent widget - @type QWidget + @param parent reference to the parent widget (defaults to None) + @type QWidget (optional) """ super().__init__(parent) self.setupUi(self) @@ -246,9 +246,10 @@ venvManager.virtualEnvironmentRemoved.connect(self.on_refreshButton_clicked) self.__selectedEnvironment = None - project = ericApp().getObject("Project") - project.projectOpened.connect(self.__projectOpened) - project.projectClosed.connect(self.__projectClosed) + with contextlib.suppress(KeyError): + project = ericApp().getObject("Project") + project.projectOpened.connect(self.__projectOpened) + project.projectClosed.connect(self.__projectClosed) self.__initPipMenu() self.__populateEnvironments() @@ -1554,7 +1555,28 @@ """ Private slot to open the configuration page. """ - ericApp().getObject("UserInterface").showPreferences("pipPage") + try: + ericApp().getObject("UserInterface").showPreferences("pipPage") + except KeyError: + # we were called from outside the eric IDE + from eric7.Preferences.ConfigurationDialog import ( # noqa: I101 + ConfigurationDialog, + ConfigurationMode, + ) + + dlg = ConfigurationDialog( + None, + "Configuration", + True, + fromEric=False, + displayMode=ConfigurationMode.PIPMANAGERMODE, + ) + dlg.show() + dlg.showConfigurationPageByName("pipPage") + dlg.exec() + if dlg.result() == QDialog.DialogCode.Accepted: + dlg.setPreferences() + Preferences.syncPreferences() @pyqtSlot() def __showCacheInfo(self):