Having used Minizinc for a few years now, it's a great tool.
Minizinc makes it easy to spell out a problem, try different ways to formulate the same constraint, and run the same model on some external data through lots of different solvers to see which one works best. It comes with an enormous constraint catalogue adapted to each solver.
Whether you then use PuLP, OR-tools, JuMP etc. (or even Minizinc itself) for the actual implementation is up to you; but I've found that it is hard to beat when I am at the prototyping stage.