Palaist: python3 install.py

import sys
import subprocess

def run_command(command, use_sudo=False):
    try:
        if use_sudo:
            command.insert(0, "sudo")
        subprocess.check_call(command)
        print(" ".join(command))
    except subprocess.CalledProcessError:
        print("FAILED:", " ".join(command))

print("\n=== Updating system packages ===\n")
run_command(["apt", "update"], use_sudo=True)

# --- System dependencies ---
system_packages = [
    "python3-pip",
    "python3-venv",
    "python3-dev",

    "python3-numpy",
    "python3-pandas",
    "python3-opencv",
    "python3-flask",
    "python3-flask-socketio",
    "python3-paramiko",
    "python3-pyqt5",
    "python3-urllib3",
    "python3-requests",
    "python3-chardet",

    "libsdl2-image-2.0-0",
    "libhdf5-dev",
    "libatlas-base-dev",
    "libusb-1.0-0-dev",
    "libopenjp2-7",
    "libopenjp2-7-dev",

    "net-tools",
    "wireless-tools",
    "iw",
    "rfkill"
]

for pkg in system_packages:
    run_command(["apt", "install", "-y", pkg], use_sudo=True)

# --- Python packages (pip) ---
python_pip_packages = [
    "depthai",
    "depthai-sdk",
    "Kivy",
    "pynmea2"
]

print("\n=== Installing Python packages with pip ===\n")
for pkg in python_pip_packages:
    run_command(
        [sys.executable, "-m", "pip", "install", "--break-system-packages", pkg]
    )

# --- Permissions ---
target_folder = "/home/pi/Desktop/WEEDER_PREMIUM_MULTI"
print(f"\nSetting chmod 777 to: {target_folder}")
run_command(["chmod", "-R", "777", target_folder], use_sudo=True)

# --- UDEV rule for DepthAI camera ---
print("\nCreating USB rule for DepthAI...")
depthai_rule = 'SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666"'
run_command(
    ["bash", "-c", f"echo '{depthai_rule}' | tee /etc/udev/rules.d/80-movidius.rules"],
    use_sudo=True
)
run_command(["udevadm", "control", "--reload-rules"], use_sudo=True)
run_command(["udevadm", "trigger"], use_sudo=True)

print("\n=== Installation complete ===\n")