Test / install_packages.py
mrwabnalas40's picture
Upload 10 files
498f51d verified
import subprocess
import sys
def install_packages():
print("تحديث pip...")
subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", "pip", "--user"])
print("تثبيت الحزم من requirements.txt...")
subprocess.check_call([sys.executable, "-m", "pip", "install", "--user", "-r", "requirements.txt"])
if __name__ == "__main__":
try:
install_packages()
print("تم تثبيت الحزم بنجاح.")
except subprocess.CalledProcessError as e:
print(f"حدث خطأ أثناء التثبيت: {e}")
import subprocess
import sys
from pathlib import Path
import platform
from datetime import datetime
try:
from colorama import init, Fore
except ImportError:
subprocess.check_call([sys.executable, "-m", "pip", "install", "colorama", "--user"])
from colorama import init, Fore
init(autoreset=True)
LOG_FILE = "install_log.txt"
def log(message):
with open(LOG_FILE, "a", encoding="utf-8") as f:
f.write(f"[{datetime.now()}] {message}\n")
def print_and_log(message, color=Fore.WHITE):
print(color + message)
log(message)
def install_packages():
try:
print_and_log("📢 نظام التشغيل: " + platform.system(), Fore.CYAN)
print_and_log("🔄 جاري تحديث pip...", Fore.YELLOW)
subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", "pip", "--user"])
requirements_path = Path("requirements.txt")
if not requirements_path.exists():
print_and_log("⚠️ ملف requirements.txt غير موجود!", Fore.RED)
return
print_and_log("📦 جاري تثبيت الحزم من requirements.txt...", Fore.YELLOW)
subprocess.check_call([sys.executable, "-m", "pip", "install", "--user", "-r", str(requirements_path)])
print_and_log("✅ تم تثبيت الحزم بنجاح.", Fore.GREEN)
except subprocess.CalledProcessError as e:
print_and_log(f"❌ حدث خطأ أثناء التثبيت: {e}", Fore.RED)
except Exception as e:
print_and_log(f"⚠️ خطأ غير متوقع: {e}", Fore.RED)
if __name__ == "__main__":
install_packages()
import subprocess
import sys
import os
import socket
from pathlib import Path
from datetime import datetime
import platform
try:
from colorama import init, Fore, Style
except ImportError:
subprocess.call([sys.executable, "-m", "pip", "install", "colorama", "--user"])
from colorama import init, Fore, Style
init(autoreset=True)
LOG_FILE = "install_log.txt"
VENV_DIR = Path("env")
REQUIREMENTS_FILE = Path("requirements.txt")
def log(message):
with open(LOG_FILE, "a", encoding="utf-8") as f:
f.write(f"[{datetime.now()}] {message}\n")
def print_and_log(message, color=Fore.WHITE):
print(color + message)
log(message)
def check_internet(host="8.8.8.8", port=53, timeout=3):
try:
socket.setdefaulttimeout(timeout)
socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port))
return True
except Exception:
return False
def create_virtual_env():
if not VENV_DIR.exists():
print_and_log("📦 إنشاء بيئة افتراضية...", Fore.YELLOW)
subprocess.check_call([sys.executable, "-m", "venv", str(VENV_DIR)])
else:
print_and_log("✅ البيئة الافتراضية موجودة مسبقًا.", Fore.CYAN)
def activate_venv_command():
if platform.system() == "Windows":
return str(VENV_DIR / "Scripts" / "python.exe")
else:
return str(VENV_DIR / "bin" / "python")
def install_requirements(python_exec):
if not REQUIREMENTS_FILE.exists():
print_and_log("❗ ملف requirements.txt غير موجود!", Fore.RED)
return
print_and_log("📥 تثبيت الحزم المطلوبة...", Fore.YELLOW)
subprocess.check_call([python_exec, "-m", "pip", "install", "--upgrade", "pip"])
subprocess.check_call([python_exec, "-m", "pip", "install", "-r", str(REQUIREMENTS_FILE)])
def run_post_install_script():
script = Path("post_install.py")
if script.exists():
print_and_log("🚀 تشغيل سكربت post_install.py...", Fore.GREEN)
subprocess.call([activate_venv_command(), str(script)])
else:
print_and_log("ℹ️ لا يوجد سكربت إضافي للتشغيل.", Fore.BLUE)
def main():
print_and_log("⚙️ تشغيل Smart Installer...", Fore.MAGENTA)
print_and_log(f"🖥️ نظام التشغيل: {platform.system()} {platform.release()}", Fore.CYAN)
if not check_internet():
print_and_log("❌ لا يوجد اتصال بالإنترنت!", Fore.RED)
return
try:
create_virtual_env()
python_exec = activate_venv_command()
install_requirements(python_exec)
run_post_install_script()
print_and_log("✅ تم التثبيت بنجاح!", Fore.GREEN)
except subprocess.CalledProcessError as e:
print_and_log(f"💥 خطأ أثناء تنفيذ أمر: {e}", Fore.RED)
except Exception as ex:
print_and_log(f"🚨 استثناء غير متوقع: {ex}", Fore.RED)
if __name__ == "__main__":
main()