src/eric7/eric7_pip.py

Mon, 29 May 2023 16:18:38 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 29 May 2023 16:18:38 +0200
branch
eric7
changeset 10084
125166c6b66c
child 10238
9ea4634a697e
permissions
-rw-r--r--

pip Interface
- Added a standalone application for Python package management with `pip`.

10084
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 #!/usr/bin/env python3
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 # Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de>
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 #
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 """
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 eric pip Packages Manager.
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 This is the main Python script to manage Python packages with 'pip' from
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 outside of the IDE.
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 """
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import os
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import sys
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from PyQt6.QtGui import QGuiApplication
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 for arg in sys.argv[:]:
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 if arg.startswith("--config="):
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 from eric7 import Globals
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 configDir = arg.replace("--config=", "")
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Globals.setConfigDir(configDir)
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 sys.argv.remove(arg)
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 elif arg.startswith("--settings="):
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 from PyQt6.QtCore import QSettings
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 settingsDir = os.path.expanduser(arg.replace("--settings=", ""))
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 if not os.path.isdir(settingsDir):
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 os.makedirs(settingsDir)
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 QSettings.setPath(
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 QSettings.Format.IniFormat, QSettings.Scope.UserScope, settingsDir
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 )
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 sys.argv.remove(arg)
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 from eric7.Globals import AppInfo
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 from eric7.Toolbox import Startup
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 def createMainWidget(argv): # noqa: U100
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 Function to create the main widget.
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @param argv list of commandline parameters
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @type list of str
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @return reference to the main widget
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @rtype QWidget
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 from eric7.PipInterface.PipPackagesWindow import PipPackagesWindow
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 return PipPackagesWindow(None)
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 def main():
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 Main entry point into the application.
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 """
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 QGuiApplication.setDesktopFileName("eric7_pip.desktop")
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 options = [
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 (
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 "--config=configDir",
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 "use the given directory as the one containing the config files",
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 ),
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 (
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 "--settings=settingsDir",
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 "use the given directory to store the settings files",
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 ),
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 ]
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 appinfo = AppInfo.makeAppInfo(
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 sys.argv,
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 "eric Package Manager",
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 "",
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 "Utility to manage Python packages with 'pip'.",
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 options,
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 )
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 res = Startup.simpleAppStartup(sys.argv, appinfo, createMainWidget)
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 sys.exit(res)
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 if __name__ == "__main__":
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 main()

eric ide

mercurial