I faced a similar question, and in general it is tough in Python world because choosing a derivative-free optimizer requires one to compare scipy.optimize, dlib, ax-platform, hyperopt, nevergrad, optuna, bayesopt, platypus, pymoo, pySOT and skopt (and more by the time you read this) and there is barely a convention in common.
I finally decided I would just do it once and for all. So now I compute Elo ratings for 60+ derivative free optimizers, as explained in a blog article HumpDay: A Package to Help You Choose a Python Global Optimizer. You can also put your objective function directly into a colab notebook and it will show you which package does the best job.
I won't presume to know which will work in your case, but don't overlook the following: dlib, pySOT (dycors); skopt; nevergrad (ngopt8); shgo. Ping me if you'd like to add your objective function to the test suite. I do have a sneaking suspicion that an Algorithm from the 1960s is going to work just fine in your case.
btw if you go with Julia instead, more power to you!