Install & Compatibility
Where this runs
tested against v0.5.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
360MB installed
● package 360MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
BayesianOptimizationLoop
✓ from emukit.bayesian_optimization.loops import BayesianOptimizationLoop
✗ from emukit.bayesian_optimization import BayesianOptimizationLoop
BayesianOptimizationLoop is in emukit.bayesian_optimization.loops, not the top-level of the module.
create_initial_design
✓ from emukit.experimental_design.model_free.latin_design import LatinDesign
✗ from emukit.experimental_design import LatinDesign
LatinDesign is in emukit.experimental_design.model_free.latin_design.
GPyModel
✓ from emukit.model_wrappers import GPyModel
✗ from emukit.models import GPyModel
Model wrappers live in emukit.model_wrappers, not emukit.models.
QuadratureCaratheodoryMeasure
✓ from emukit.quadrature.kernels import QuadratureCaratheodoryMeasure
✗ from emukit.quadrature import QuadratureCaratheodoryMeasure
Quadrature kernel/measure classes are in emukit.quadrature.kernels.
Minimal Bayesian optimization loop using Emukit with a GPy model.
import numpy as np
from emukit.core import ContinuousParameter, ParameterSpace
from emukit.model_wrappers import GPyModelWrapper
from emukit.bayesian_optimization.loops import BayesianOptimizationLoop
from emukit.core.acquisition import ExpectedImprovement
# Define a simple objective
def objective(x):
return x**2
# Parameter space
space = ParameterSpace([ContinuousParameter('x', -5, 5)])
# Initial data
X_init = np.random.uniform(-5, 5, (3, 1))
Y_init = objective(X_init)
# Model
gpy_model = GPyModelWrapper(X_init, Y_init)
# Acquisition function
ei = ExpectedImprovement()
# Optimization loop
loop = BayesianOptimizationLoop(space, gpy_model, acquisition=ei)
# Run one iteration
new_x = loop.get_next_points([X_init, Y_init])
print('Suggested next point:', new_x)
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'emukit.bayesian_optimization'
Import path is wrong; the correct import is from emukit.bayesian_optimization.loops.
fixUse: from emukit.bayesian_optimization.loops import BayesianOptimizationLoop
AttributeError: module 'emukit' has no attribute 'model_wrappers'
Misspelled 'emukit' or installed the wrong package; also GPy may be missing.
fixpip install emukit[gpy] or pip install emukit[sklearn] for sklearn wrapper.
ValueError: The number of points in X and Y must be the same
Passed X and Y arrays with mismatched first dimension.
fixEnsure X.shape[0] == Y.shape[0]; both must be 2D arrays (n_samples, n_dims).
ImportError: cannot import name 'GPyModel' from 'emukit.model_wrappers'
Incorrect class name; should be GPyModelWrapper.
fixUse: from emukit.model_wrappers import GPyModelWrapper
Upgrade
Version history
0.5.1latest on PyPI · released Feb 22, 2026
Audit
Dependencies
GPyoptionalDefault Gaussian process backend; pinned to numpy<2.0
scikit-learnoptionalOptional GP backend via wrapper
bnnoptionalOptional Bayesian neural network backend