Config / requirements.py
Widithok's picture
Upload requirements.py
53e1da7 verified
Raw History Blame Contribute Delete
1.89 kB
import subprocess
import sys
from packaging.requirements import Requirement
from packaging.version import Version
def get_installed_packages():
"""Mengembalikan dictionary berisi nama paket dan versinya yang terinstal."""
packages = {}
try:
result = subprocess.run([sys.executable, '-m', 'pip', 'freeze'], capture_output=True, text=True, check=True)
for line in result.stdout.splitlines():
if '==' in line:
name, version = line.split('==')
packages[name.lower()] = Version(version)
except subprocess.CalledProcessError:
return {} # Mengembalikan dictionary kosong jika ada error
def check_requirements(requirements_file="requirements.txt"):
"""
Mengecek apakah semua requirement dalam file sudah terinstal dengan versi yang sesuai.
Mengembalikan True jika semua sesuai, False jika ada yang tidak sesuai atau tidak terinstal.
"""
installed_packages = get_installed_packages()
try:
with open(requirements_file, 'r') as f:
for line in f:
line = line.strip()
if line and not line.startswith('#'):
try:
req = Requirement(line)
package_name = req.name.lower()
required_specifier = req.specifier
if package_name not in installed_packages or not required_specifier.contains(installed_packages[package_name]):
return False # Ada yang tidak sesuai
except:
return False # Gagal memproses baris
except FileNotFoundError:
return False # File tidak ditemukan
return True # Semua sesuai
if __name__ == "__main__":
all_met = check_requirements()
print(all_met) # Untuk keperluan pengujian, Anda bisa mencetak hasilnya di sini