302 """ |
302 """ |
303 interpreter = self.getVirtualenvInterpreter(venvName) |
303 interpreter = self.getVirtualenvInterpreter(venvName) |
304 if not interpreter: |
304 if not interpreter: |
305 return |
305 return |
306 |
306 |
307 dia = PipDialog(self.tr("Install PIP")) |
307 dia = PipDialog(self.tr("Install PIP"), parent=self.__ui) |
308 commands = ( |
308 commands = ( |
309 [(interpreter, ["-m", "ensurepip", "--user"])] |
309 [(interpreter, ["-m", "ensurepip", "--user"])] |
310 if userSite |
310 if userSite |
311 else [(interpreter, ["-m", "ensurepip"])] |
311 else [(interpreter, ["-m", "ensurepip"])] |
312 ) |
312 ) |
349 ] |
349 ] |
350 else: |
350 else: |
351 args = ["-m", "pip", "install", "--ignore-installed"] |
351 args = ["-m", "pip", "install", "--ignore-installed"] |
352 args.append("pip") |
352 args.append("pip") |
353 |
353 |
354 dia = PipDialog(self.tr("Repair PIP")) |
354 dia = PipDialog(self.tr("Repair PIP"), parent=self.__ui) |
355 res = dia.startProcess(interpreter, args) |
355 res = dia.startProcess(interpreter, args) |
356 if res: |
356 if res: |
357 dia.exec() |
357 dia.exec() |
358 |
358 |
359 def __checkUpgradePyQt(self, packages): |
359 def __checkUpgradePyQt(self, packages): |
460 return None # should not be reached; play it safe |
460 return None # should not be reached; play it safe |
461 |
461 |
462 if not res: |
462 if not res: |
463 # user rejected PyQt6 and/or eric-ide/eric7 update |
463 # user rejected PyQt6 and/or eric-ide/eric7 update |
464 packages = self.__filterUpgradePackages(packages) |
464 packages = self.__filterUpgradePackages(packages) |
|
465 if not packages: |
|
466 EricMessageBox.information( |
|
467 None, |
|
468 self.tr("Upgrade Packages"), |
|
469 self.tr( |
|
470 "There are no packages except 'eric-ide' or 'PyQt6'" |
|
471 " left for upgrade." |
|
472 ), |
|
473 ) |
|
474 return False |
465 except AttributeError: |
475 except AttributeError: |
466 return False |
476 return False |
467 |
477 |
468 if Preferences.getPip("PipSearchIndex"): |
478 if Preferences.getPip("PipSearchIndex"): |
469 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple" |
479 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple" |
471 else: |
481 else: |
472 args = ["-m", "pip", "install", "--upgrade"] |
482 args = ["-m", "pip", "install", "--upgrade"] |
473 if userSite: |
483 if userSite: |
474 args.append("--user") |
484 args.append("--user") |
475 args += packages |
485 args += packages |
476 dia = PipDialog(self.tr("Upgrade Packages")) |
486 dia = PipDialog(self.tr("Upgrade Packages"), parent=self.__ui) |
477 res = dia.startProcess(interpreter, args) |
487 res = dia.startProcess(interpreter, args) |
478 if res: |
488 if res: |
479 dia.exec() |
489 dia.exec() |
480 return res |
490 return res |
481 |
491 |
517 if userSite: |
527 if userSite: |
518 args.append("--user") |
528 args.append("--user") |
519 if forceReinstall: |
529 if forceReinstall: |
520 args.append("--force-reinstall") |
530 args.append("--force-reinstall") |
521 args += packages |
531 args += packages |
522 dia = PipDialog(self.tr("Install Packages")) |
532 dia = PipDialog(self.tr("Install Packages"), parent=self.__ui) |
523 res = dia.startProcess(interpreter, args) |
533 res = dia.startProcess(interpreter, args) |
524 if res: |
534 if res: |
525 dia.exec() |
535 dia.exec() |
526 |
536 |
527 def installRequirements(self, venvName): |
537 def installRequirements(self, venvName): |
531 @param venvName name of the virtual environment to be used |
541 @param venvName name of the virtual environment to be used |
532 @type str |
542 @type str |
533 """ |
543 """ |
534 from .PipFileSelectionDialog import PipFileSelectionDialog |
544 from .PipFileSelectionDialog import PipFileSelectionDialog |
535 |
545 |
536 dlg = PipFileSelectionDialog("requirements") |
546 dlg = PipFileSelectionDialog("requirements", parent=self.__ui) |
537 if dlg.exec() == QDialog.DialogCode.Accepted: |
547 if dlg.exec() == QDialog.DialogCode.Accepted: |
538 requirements, user = dlg.getData() |
548 requirements, user = dlg.getData() |
539 if requirements and os.path.exists(requirements): |
549 if requirements and os.path.exists(requirements): |
540 interpreter = self.getVirtualenvInterpreter(venvName) |
550 interpreter = self.getVirtualenvInterpreter(venvName) |
541 if not interpreter: |
551 if not interpreter: |
547 else: |
557 else: |
548 args = ["-m", "pip", "install"] |
558 args = ["-m", "pip", "install"] |
549 if user: |
559 if user: |
550 args.append("--user") |
560 args.append("--user") |
551 args += ["--requirement", requirements] |
561 args += ["--requirement", requirements] |
552 dia = PipDialog(self.tr("Install Packages from Requirements")) |
562 dia = PipDialog( |
|
563 self.tr("Install Packages from Requirements"), parent=self.__ui |
|
564 ) |
553 res = dia.startProcess(interpreter, args) |
565 res = dia.startProcess(interpreter, args) |
554 if res: |
566 if res: |
555 dia.exec() |
567 dia.exec() |
556 |
568 |
557 def installEditableProject(self, interpreter, projectPath): |
569 def installEditableProject(self, interpreter, projectPath): |
568 if Preferences.getPip("PipSearchIndex"): |
580 if Preferences.getPip("PipSearchIndex"): |
569 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple" |
581 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple" |
570 args += ["--index-url", indexUrl] |
582 args += ["--index-url", indexUrl] |
571 args += ["--editable", projectPath] |
583 args += ["--editable", projectPath] |
572 |
584 |
573 dia = PipDialog(self.tr("Install Project")) |
585 dia = PipDialog(self.tr("Install Project"), parent=self.__ui) |
574 res = dia.startProcess(interpreter, args) |
586 res = dia.startProcess(interpreter, args) |
575 if res: |
587 if res: |
576 dia.exec() |
588 dia.exec() |
577 |
589 |
578 def installPyprojectDependencies(self, venvName): |
590 def installPyprojectDependencies(self, venvName): |
582 @param venvName name of the virtual environment to be used |
594 @param venvName name of the virtual environment to be used |
583 @type str |
595 @type str |
584 """ |
596 """ |
585 from .PipFileSelectionDialog import PipFileSelectionDialog |
597 from .PipFileSelectionDialog import PipFileSelectionDialog |
586 |
598 |
587 dlg = PipFileSelectionDialog("pyproject") |
599 dlg = PipFileSelectionDialog("pyproject", parent=self.__ui) |
588 if dlg.exec() == QDialog.DialogCode.Accepted: |
600 if dlg.exec() == QDialog.DialogCode.Accepted: |
589 pyproject, user = dlg.getData() |
601 pyproject, user = dlg.getData() |
590 if pyproject and os.path.exists(pyproject): |
602 if pyproject and os.path.exists(pyproject): |
591 try: |
603 try: |
592 with open(pyproject, "r", encoding="utf-8") as f: |
604 with open(pyproject, "r", encoding="utf-8") as f: |
623 else: |
635 else: |
624 args = ["-m", "pip", "install"] |
636 args = ["-m", "pip", "install"] |
625 if user: |
637 if user: |
626 args.append("--user") |
638 args.append("--user") |
627 args += dependencies |
639 args += dependencies |
628 dia = PipDialog(self.tr("Install Packages from 'pyproject.toml'")) |
640 dia = PipDialog( |
|
641 self.tr("Install Packages from 'pyproject.toml'"), parent=self.__ui |
|
642 ) |
629 res = dia.startProcess(interpreter, args) |
643 res = dia.startProcess(interpreter, args) |
630 if res: |
644 if res: |
631 dia.exec() |
645 dia.exec() |
632 |
646 |
633 def uninstallPackages(self, packages, venvName): |
647 def uninstallPackages(self, packages, venvName): |
652 if dlg.exec() == QDialog.DialogCode.Accepted: |
666 if dlg.exec() == QDialog.DialogCode.Accepted: |
653 interpreter = self.getVirtualenvInterpreter(venvName) |
667 interpreter = self.getVirtualenvInterpreter(venvName) |
654 if not interpreter: |
668 if not interpreter: |
655 return False |
669 return False |
656 args = ["-m", "pip", "uninstall", "--yes"] + packages |
670 args = ["-m", "pip", "uninstall", "--yes"] + packages |
657 dia = PipDialog(self.tr("Uninstall Packages")) |
671 dia = PipDialog(self.tr("Uninstall Packages"), parent=self.__ui) |
658 res = dia.startProcess(interpreter, args) |
672 res = dia.startProcess(interpreter, args) |
659 if res: |
673 if res: |
660 dia.exec() |
674 dia.exec() |
661 return res |
675 return res |
662 |
676 |
668 @type str |
682 @type str |
669 """ |
683 """ |
670 from .PipFileSelectionDialog import PipFileSelectionDialog |
684 from .PipFileSelectionDialog import PipFileSelectionDialog |
671 |
685 |
672 if venvName: |
686 if venvName: |
673 dlg = PipFileSelectionDialog("requirements", install=False) |
687 dlg = PipFileSelectionDialog( |
|
688 "requirements", install=False, parent=self.__ui |
|
689 ) |
674 if dlg.exec() == QDialog.DialogCode.Accepted: |
690 if dlg.exec() == QDialog.DialogCode.Accepted: |
675 requirements, _user = dlg.getData() |
691 requirements, _user = dlg.getData() |
676 if requirements and os.path.exists(requirements): |
692 if requirements and os.path.exists(requirements): |
677 try: |
693 try: |
678 with open(requirements, "r") as f: |
694 with open(requirements, "r") as f: |
712 @type str |
731 @type str |
713 """ |
732 """ |
714 from .PipFileSelectionDialog import PipFileSelectionDialog |
733 from .PipFileSelectionDialog import PipFileSelectionDialog |
715 |
734 |
716 if venvName: |
735 if venvName: |
717 dlg = PipFileSelectionDialog("pyproject", install=False) |
736 dlg = PipFileSelectionDialog("pyproject", install=False, parent=self.__ui) |
718 if dlg.exec() == QDialog.DialogCode.Accepted: |
737 if dlg.exec() == QDialog.DialogCode.Accepted: |
719 pyproject, _user = dlg.getData() |
738 pyproject, _user = dlg.getData() |
720 if pyproject and os.path.exists(pyproject): |
739 if pyproject and os.path.exists(pyproject): |
721 try: |
740 try: |
722 with open(pyproject, "r", encoding="utf-8") as f: |
741 with open(pyproject, "r", encoding="utf-8") as f: |
762 if not interpreter: |
781 if not interpreter: |
763 return |
782 return |
764 |
783 |
765 args = ["-m", "pip", "uninstall", "--yes"] + dependencies |
784 args = ["-m", "pip", "uninstall", "--yes"] + dependencies |
766 dia = PipDialog( |
785 dia = PipDialog( |
767 self.tr("Uninstall Packages from 'pyproject.toml'") |
786 self.tr("Uninstall Packages from 'pyproject.toml'"), |
|
787 parent=self.__ui, |
768 ) |
788 ) |
769 res = dia.startProcess(interpreter, args) |
789 res = dia.startProcess(interpreter, args) |
770 if res: |
790 if res: |
771 dia.exec() |
791 dia.exec() |
772 |
792 |
1170 """ |
1190 """ |
1171 if venvName: |
1191 if venvName: |
1172 interpreter = self.getVirtualenvInterpreter(venvName) |
1192 interpreter = self.getVirtualenvInterpreter(venvName) |
1173 if interpreter: |
1193 if interpreter: |
1174 args = ["-m", "pip", "cache", "info"] |
1194 args = ["-m", "pip", "cache", "info"] |
1175 dia = PipDialog(self.tr("Cache Info")) |
1195 dia = PipDialog(self.tr("Cache Info"), parent=self.__ui) |
1176 res = dia.startProcess(interpreter, args, showArgs=False) |
1196 res = dia.startProcess(interpreter, args, showArgs=False) |
1177 if res: |
1197 if res: |
1178 dia.exec() |
1198 dia.exec() |
1179 |
1199 |
1180 def cacheList(self, venvName): |
1200 def cacheList(self, venvName): |
1196 |
1216 |
1197 if ok: |
1217 if ok: |
1198 args = ["-m", "pip", "cache", "list"] |
1218 args = ["-m", "pip", "cache", "list"] |
1199 if pattern.strip(): |
1219 if pattern.strip(): |
1200 args.append(pattern.strip()) |
1220 args.append(pattern.strip()) |
1201 dia = PipDialog(self.tr("List Cached Files")) |
1221 dia = PipDialog(self.tr("List Cached Files"), parent=self.__ui) |
1202 res = dia.startProcess(interpreter, args, showArgs=False) |
1222 res = dia.startProcess(interpreter, args, showArgs=False) |
1203 if res: |
1223 if res: |
1204 dia.exec() |
1224 dia.exec() |
1205 |
1225 |
1206 def cacheRemove(self, venvName): |
1226 def cacheRemove(self, venvName): |
1220 QLineEdit.EchoMode.Normal, |
1240 QLineEdit.EchoMode.Normal, |
1221 ) |
1241 ) |
1222 |
1242 |
1223 if ok and pattern.strip(): |
1243 if ok and pattern.strip(): |
1224 args = ["-m", "pip", "cache", "remove", pattern.strip()] |
1244 args = ["-m", "pip", "cache", "remove", pattern.strip()] |
1225 dia = PipDialog(self.tr("Remove Cached Files")) |
1245 dia = PipDialog(self.tr("Remove Cached Files"), parent=self.__ui) |
1226 res = dia.startProcess(interpreter, args, showArgs=False) |
1246 res = dia.startProcess(interpreter, args, showArgs=False) |
1227 if res: |
1247 if res: |
1228 dia.exec() |
1248 dia.exec() |
1229 |
1249 |
1230 def cachePurge(self, venvName): |
1250 def cachePurge(self, venvName): |
1245 " files need to be downloaded again." |
1265 " files need to be downloaded again." |
1246 ), |
1266 ), |
1247 ) |
1267 ) |
1248 if ok: |
1268 if ok: |
1249 args = ["-m", "pip", "cache", "purge"] |
1269 args = ["-m", "pip", "cache", "purge"] |
1250 dia = PipDialog(self.tr("Purge Cache")) |
1270 dia = PipDialog(self.tr("Purge Cache"), parent=self.__ui) |
1251 res = dia.startProcess(interpreter, args, showArgs=False) |
1271 res = dia.startProcess(interpreter, args, showArgs=False) |
1252 if res: |
1272 if res: |
1253 dia.exec() |
1273 dia.exec() |
1254 |
1274 |
1255 ####################################################################### |
1275 ####################################################################### |