Widithok commited on
Commit
53e1da7
·
verified ·
1 Parent(s): 5db74b8

Upload requirements.py

Browse files
Files changed (1) hide show
  1. requirements.py +46 -0
requirements.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import subprocess
2
+ import sys
3
+ from packaging.requirements import Requirement
4
+ from packaging.version import Version
5
+
6
+ def get_installed_packages():
7
+ """Mengembalikan dictionary berisi nama paket dan versinya yang terinstal."""
8
+ packages = {}
9
+ try:
10
+ result = subprocess.run([sys.executable, '-m', 'pip', 'freeze'], capture_output=True, text=True, check=True)
11
+ for line in result.stdout.splitlines():
12
+ if '==' in line:
13
+ name, version = line.split('==')
14
+ packages[name.lower()] = Version(version)
15
+ except subprocess.CalledProcessError:
16
+ return {} # Mengembalikan dictionary kosong jika ada error
17
+
18
+ def check_requirements(requirements_file="requirements.txt"):
19
+ """
20
+ Mengecek apakah semua requirement dalam file sudah terinstal dengan versi yang sesuai.
21
+ Mengembalikan True jika semua sesuai, False jika ada yang tidak sesuai atau tidak terinstal.
22
+ """
23
+ installed_packages = get_installed_packages()
24
+ try:
25
+ with open(requirements_file, 'r') as f:
26
+ for line in f:
27
+ line = line.strip()
28
+ if line and not line.startswith('#'):
29
+ try:
30
+ req = Requirement(line)
31
+ package_name = req.name.lower()
32
+ required_specifier = req.specifier
33
+
34
+ if package_name not in installed_packages or not required_specifier.contains(installed_packages[package_name]):
35
+ return False # Ada yang tidak sesuai
36
+ except:
37
+ return False # Gagal memproses baris
38
+ except FileNotFoundError:
39
+ return False # File tidak ditemukan
40
+
41
+ return True # Semua sesuai
42
+
43
+ if __name__ == "__main__":
44
+ all_met = check_requirements()
45
+ print(all_met) # Untuk keperluan pengujian, Anda bisa mencetak hasilnya di sini
46
+