File size: 1,451 Bytes
aa8b25c e67d561 aa8b25c e67d561 aa8b25c b5712a3 aa8b25c e67d561 aa8b25c e67d561 aa8b25c e67d561 aa8b25c e67d561 36ea38b b5712a3 180f9fe b5712a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
from src.ui import create_ui
import os
import subprocess
import urllib.request
import tarfile
def install_minizinc():
install_path = "/home/user/minizinc"
if os.path.exists(os.path.join(install_path, "bin", "minizinc")):
print("β
MiniZinc already installed.")
return
print("β¬οΈ Downloading MiniZinc...")
url = "https://github.com/MiniZinc/MiniZincIDE/releases/download/2.9.0/MiniZincIDE-2.9.0-bundle-linux-x86_64.tgz"
bundle_path = "/tmp/minizinc.tgz"
urllib.request.urlretrieve(url, bundle_path)
print("π¦ Extracting MiniZinc...")
os.makedirs(install_path, exist_ok=True)
with tarfile.open(bundle_path, "r:gz") as tar:
tar.extractall(path=install_path, members=_strip_top_level(tar))
print("β
MiniZinc installed.")
def _strip_top_level(tar):
# Removes top-level folder when extracting
top_level = tar.getmembers()[0].name.split('/')[0]
for member in tar.getmembers():
member.path = '/'.join(member.path.split('/')[1:])
yield member
# Install and patch env
install_minizinc()
os.environ["PATH"] = f"/home/user/minizinc/bin:{os.environ['PATH']}"
# Check it works
try:
version = subprocess.check_output(["minizinc", "--version"], text=True)
print("π§ MiniZinc version:", version.strip())
except Exception as e:
print("β MiniZinc install failed:", e)
if __name__ == "__main__":
demo = create_ui()
demo.queue().launch() |