-
-
Notifications
You must be signed in to change notification settings - Fork 12
/
build.py
135 lines (105 loc) · 3.09 KB
/
build.py
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import os
import subprocess
import sys
import os
import subprocess
import sys
import shutil
import urllib.request
def python_path():
return (
"venv\\Scripts\\python.exe" if getPlatform() == "win32" else "venv/bin/python3"
)
def download_file(url, destination):
print(f"Downloading file from {url}")
urllib.request.urlretrieve(url, destination)
print("File downloaded successfully")
# Rest of the code...
def getPlatform():
return sys.platform
def build_gui():
print("Building GUI")
if getPlatform() == "darwin" or getPlatform() == "linux":
os.system("pyside6-uic -g python testRVEInterface.ui > mainwindow.py")
if getPlatform() == "win32":
os.system(
r".\venv\Lib\site-packages\PySide6\uic.exe -g python testRVEInterface.ui > mainwindow.py"
)
def install_pip():
download_file("https://bootstrap.pypa.io/get-pip.py", "get-pip.py")
command = ["python3", "get-pip.py"]
subprocess.run(command)
def install_pip_in_venv():
command = [
"venv\\Scripts\\python.exe" if getPlatform() == "win32" else "venv/bin/python3",
"get-pip.py",
]
subprocess.run(command)
def build_resources():
print("Building resources.rc")
if getPlatform() == "darwin" or getPlatform() == "linux":
os.system("pyside6-rcc -g python resources.qrc > resources_rc.py")
if getPlatform() == "win32":
os.system(
r".\venv\Lib\site-packages\PySide6\rcc.exe -g python resources.qrc > resources_rc.py"
)
def create_venv(python_version="python3.11"):
print("Creating virtual environment")
command = [python_version, "-m", "venv", "venv"]
subprocess.run(command)
def install_requirements_in_venv():
print("Installing requirements in virtual environment")
command = [
python_path(),
"-m",
"pip",
"install",
"-r",
"requirements.txt",
]
subprocess.run(command)
def build_executable():
print("Building executable")
if getPlatform() == "win32" or getPlatform() == "darwin":
command = [
python_path(),
"-m",
"PyInstaller",
"REAL-Video-Enhancer.py",
"--collect-all",
"PySide6",
"--icon=icons/logo-v2.ico",
"--noconfirm",
"--noupx",
]
else:
command = [
python_path(),
"-m",
"cx_Freeze",
"REAL-Video-Enhancer.py",
"--target-dir",
"dist",
]
subprocess.run(command)
def clean():
print("Cleaning up")
os.remove("get-pip.py")
def checkIfExeExists(exe):
path = shutil.which(exe)
return path is not None
install_pip()
linux_and_mac_py_ver = "python3.10"
python_version = (
linux_and_mac_py_ver
if getPlatform() != "win32" and checkIfExeExists(linux_and_mac_py_ver)
else "python3"
)
create_venv(python_version=python_version)
install_pip_in_venv()
install_requirements_in_venv()
build_gui()
build_resources()
if len(sys.argv) > 1:
if sys.argv[1] == "--build_exe":
build_executable()