diff --git a/include/aidge/utils/Registrar.hpp b/include/aidge/utils/Registrar.hpp
index a5bd260ec189ac998134b738ca1ae757f2a0038c..567270d63c092aef6411a4438f59b7770ee3d5bf 100644
--- a/include/aidge/utils/Registrar.hpp
+++ b/include/aidge/utils/Registrar.hpp
@@ -132,11 +132,13 @@ void declare_registrable(py::module& m, const std::string& class_name){
 #ifdef PYBIND
 #define SET_IMPL_MACRO(T_Op, op, backend_name) \
      \
-        if(Py_IsInitialized()) { \
-            auto obj = py::cast(&(op)); \
-            (op).setImpl(Registrar<T_Op>::create(backend_name)(op)); \
-        } else { \
-            (op).setImpl(Registrar<T_Op>::create(backend_name)(op)); \
+        if (Registrar<T_Op>::exists(backend_name)) { \
+            if(Py_IsInitialized()) { \
+                auto obj = py::cast(&(op)); \
+                (op).setImpl(Registrar<T_Op>::create(backend_name)(op)); \
+            } else { \
+                (op).setImpl(Registrar<T_Op>::create(backend_name)(op)); \
+            } \
         }
 #else
 #define SET_IMPL_MACRO(T_Op, op, backend_name)                          \