Spaces:
Runtime error
Runtime error
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() | |