From 290d030b612986f46319c9d53019dffedf22f0be Mon Sep 17 00:00:00 2001 From: wout4 Date: Mon, 17 Jun 2024 17:10:30 +0200 Subject: [PATCH] check if minizinc executable is installed --- cpmpy/solvers/minizinc.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/cpmpy/solvers/minizinc.py b/cpmpy/solvers/minizinc.py index 8d955d518..062a44101 100644 --- a/cpmpy/solvers/minizinc.py +++ b/cpmpy/solvers/minizinc.py @@ -74,29 +74,36 @@ class CPM_minizinc(SolverInterface): required_version = (2, 8, 2) @staticmethod def supported(): - return CPM_minizinc.installed() and not CPM_minizinc.outdated() + return CPM_minizinc.installed() and CPM_minizinc.executable_installed() and not CPM_minizinc.outdated() @staticmethod def installed(): # try to import the package try: + #check if MiniZinc Python is installed import minizinc return True except ImportError as e: return False + @staticmethod + def executable_installed(): + # check if MiniZinc executable is installed + from minizinc import default_driver + if default_driver is None: + warnings.warn("MiniZinc Python is installed, but the MiniZinc executable is missing in path.") + return False + return True + @staticmethod def outdated(): from minizinc import default_driver if default_driver.parsed_version >= CPM_minizinc.required_version: return False else: - #outdated + # outdated return True - - - @staticmethod def solvernames(): """ @@ -135,6 +142,8 @@ def __init__(self, cpm_model=None, subsolver=None): """ if not self.installed(): raise Exception("CPM_minizinc: Install the python package 'minizinc'") + if not self.executable_installed(): + raise Exception("CPM_minizinc: Install the MiniZinc executable and make it available in path.") elif self.outdated(): version = str(self.required_version[0]) for x in self.required_version[1:]: