fix: on-demand gurobipy/pulp import