-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodule_handler.py
More file actions
65 lines (52 loc) · 2.31 KB
/
module_handler.py
File metadata and controls
65 lines (52 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import subprocess
import sys
import time
import debug
import main
modules = ["opencv-python", "pillow", "matplotlib", "numpy", "tkcolorpicker"]
def check_if_modules_installed(installed_modules):
mi_modules = [module
for module in modules
if module not in installed_modules]
if len(mi_modules) > 0:
debug.log(f"[Modules] Module(s) {mi_modules} could not be installed, please install manually",
text_color="red",
timestamp_color="red")
main.main()
sys.exit(f"[Modules] Module(s) {mi_modules} could not be installed, please install manually")
def upgrade_pip():
"""
Upgrade pip if necessary.
"""
try:
result = subprocess.run(["py", "-m", "pip", "install", "--upgrade", "pip", "--quiet"],
capture_output=True,
text=True)
if 'Requirement already up-to-date' in result.stdout:
debug.log("[Modules] pip is already up-to-date.")
else:
debug.log("[Modules] pip upgraded successfully.")
except subprocess.CalledProcessError as e:
debug.log(f"[Modules] Error upgrading pip: {e.stderr}")
sys.exit("[Modules] Error upgrading pip.")
def module_handler():
start_time = time.time()
global modules
# # Upgrade pip to ensure it's up-to-date
# debug.log("Upgrading pip if necessary...")
# subprocess.run(["py", "-m", "pip", "install", "--upgrade", "pip", "--quiet"], check=True, shell=True)
# Get installed modules
result = subprocess.run(["py", "-m", "pip", "list"],
capture_output=True,
text=True)
installed_modules = {line.split()[0]
for line in result.stdout.strip().split('\n')[2:]}
# Installing missing modules
missing_modules = [module for module in modules if module not in installed_modules]
if missing_modules:
subprocess.run(["py", "-m", "pip", "install", *missing_modules, "--quiet"],
check=True,
shell=True)
check_if_modules_installed(installed_modules)
debug.log("[Modules] All modules installed!", text_color="cyan")
debug.log("[Modules] Executed in {:.2f}s".format(time.time() - start_time), text_color="cyan")