diff --git a/src/dynamic-graph-py.cc b/src/dynamic-graph-py.cc
index 08ca7c804542737e3bf7631a566bc9b03f6c1bca..aed5d5357b123ba59bd36cabb005bcc583e35762 100644
--- a/src/dynamic-graph-py.cc
+++ b/src/dynamic-graph-py.cc
@@ -57,7 +57,7 @@ namespace dynamicgraph {
       PyObject* getSignalTypeList(PyObject* self, PyObject* args);
     }
 
-    PyObject* error;
+    PyObject* dgpyError;
 
     /**
        \brief plug a signal into another one.
@@ -95,7 +95,7 @@ namespace dynamicgraph {
       try {
 	signalIn->plug(signalOut);
       } catch (std::exception& exc) {
-	PyErr_SetString(error, exc.what());
+	PyErr_SetString(dgpyError, exc.what());
 	return NULL;
       }
       return Py_BuildValue("");
@@ -212,8 +212,8 @@ initwrap(void)
 
     std::string msg("dynamic_graph.error");
 
-    dynamicgraph::python::error =
+    dynamicgraph::python::dgpyError =
       PyErr_NewException(const_cast<char*>(msg.c_str()), NULL, NULL);
-    Py_INCREF(dynamicgraph::python::error);
-    PyModule_AddObject(m, "error", dynamicgraph::python::error);
+    Py_INCREF(dynamicgraph::python::dgpyError);
+    PyModule_AddObject(m, "error", dynamicgraph::python::dgpyError);
 }
diff --git a/src/entity-py.cc b/src/entity-py.cc
index 976a2b8efc3a427050bbc544937fe4671a0d78dd..2942665532f6b7b5b1d58def16edd4cb4826b211 100644
--- a/src/entity-py.cc
+++ b/src/entity-py.cc
@@ -35,7 +35,7 @@ using dynamicgraph::Matrix;
 namespace dynamicgraph {
   namespace python {
 
-    extern PyObject* error;
+    extern PyObject* dgpyError;
     using namespace convert;
 
     namespace entity {
@@ -65,7 +65,7 @@ namespace dynamicgraph {
 	      obj = dynamicgraph::g_factory.newEntity(std::string(className),
 						      std::string(instanceName));
 	    } catch (std::exception& exc) {
-	      PyErr_SetString(error, exc.what());
+	      PyErr_SetString(dgpyError, exc.what());
 	      return NULL;
 	    }
 	  }
@@ -97,7 +97,7 @@ namespace dynamicgraph {
 	try {
 	 name = entity->getName();
 	} catch(ExceptionAbstract& exc) {
-	  PyErr_SetString(error, exc.getStringMessage().c_str());
+	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
 	  return NULL;
 	}
 	return Py_BuildValue("s", name.c_str());
@@ -128,7 +128,7 @@ namespace dynamicgraph {
 	try {
 	  signal = &(entity->getSignal(std::string(name)));
 	} catch(ExceptionAbstract& exc) {
-	  PyErr_SetString(error, exc.getStringMessage().c_str());
+	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
 	  return NULL;
 	}
 	// Return the pointer to the signal without destructor since the signal
@@ -165,7 +165,8 @@ namespace dynamicgraph {
 	  }
 	  return result;
 	} catch(ExceptionAbstract& exc) {
-	  PyErr_SetString(error, exc.getStringMessage().c_str());
+	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
+	  return NULL;
 	}
 	return NULL;
       }
@@ -202,7 +203,7 @@ namespace dynamicgraph {
 	if (commandMap.count(std::string(commandName)) != 1) {
 	  std::string msg = "command " + std::string(commandName) +
 	    " is not referenced in Entity " + entity->getName();
-	  PyErr_SetString(error, msg.c_str());
+	  PyErr_SetString(dgpyError, msg.c_str());
 	  return NULL;
 	}
 	Command* command = commandMap[std::string(commandName)];
@@ -212,7 +213,7 @@ namespace dynamicgraph {
 	  std::stringstream ss;
 	  ss << "command takes " <<  typeVector.size()
 	     << " parameters, " << size << " given.";
-	  PyErr_SetString(error, ss.str().c_str());
+	  PyErr_SetString(dgpyError, ss.str().c_str());
 	  return NULL;
 	}
 
@@ -227,7 +228,7 @@ namespace dynamicgraph {
 	    std::stringstream ss;
 	    ss << "Error while parsing argument " << iParam+1 << ": "
 	       << exc.what() << ".";
-	    PyErr_SetString(error, ss.str().c_str()) ;
+	    PyErr_SetString(dgpyError, ss.str().c_str()) ;
 	    return NULL;
 	  }
 	}
@@ -236,7 +237,7 @@ namespace dynamicgraph {
 	  Value result = command->execute();
 	  return valueToPython(result);
 	} catch (const std::exception& exc) {
-	  PyErr_SetString(error, exc.what()) ;
+	  PyErr_SetString(dgpyError, exc.what()) ;
 	  return NULL;
 	}
 	return NULL;
@@ -282,7 +283,7 @@ namespace dynamicgraph {
 
 	// Retrieve the entity instance
 	if (!PyCObject_Check(object)) {
-	  PyErr_SetString(error, "first argument is not an object");
+	  PyErr_SetString(dgpyError, "first argument is not an object");
 	  return NULL;
 	}
 	void* pointer = PyCObject_AsVoidPtr(object);
@@ -293,7 +294,8 @@ namespace dynamicgraph {
 	try {
 	  command = map[commandName];
 	} catch (const std::exception& exc) {
-	  PyErr_SetString(error, exc.what());
+	  PyErr_SetString(dgpyError, exc.what());
+	  return NULL;
 	}
 	std::string docstring = command->getDocstring();
 	return Py_BuildValue("s", docstring.c_str());
@@ -306,7 +308,7 @@ namespace dynamicgraph {
 	if (!PyArg_ParseTuple(args, "O", &object)
 	    || (!PyCObject_Check(object)) )
 	  {
-	    PyErr_SetString(error, "first argument is not an object");
+	    PyErr_SetString(dgpyError, "first argument is not an object");
 	    return NULL;
 	  }
 	void* pointer = PyCObject_AsVoidPtr(object);
diff --git a/src/factory-py.cc b/src/factory-py.cc
index 12fbc9b1f13cf14c68170a68bbfb031678ce4ffc..a821440335f065724010a03a56d587bacf081d20 100644
--- a/src/factory-py.cc
+++ b/src/factory-py.cc
@@ -22,8 +22,6 @@ using dynamicgraph::ExceptionAbstract;
 
 namespace dynamicgraph {
   namespace python {
-    
-    extern PyObject* error;
 
     namespace factory {
 
diff --git a/src/signal-base-py.cc b/src/signal-base-py.cc
index 21cef5f93e98c44ea72a2edc887722b2f95a6edb..93b7984eac259ea9d9dcdfe0612bc6895c8f2368 100644
--- a/src/signal-base-py.cc
+++ b/src/signal-base-py.cc
@@ -28,11 +28,12 @@ using dynamicgraph::SignalBase;
 namespace dynamicgraph {
   namespace python {
 
-    extern PyObject* error;
+    extern PyObject* dgpyError;
     using namespace convert;
 
     namespace signalBase {
 
+
       static void destroy (void* self);
 
       /**
@@ -85,7 +86,7 @@ namespace dynamicgraph {
 	if (!PyArg_ParseTuple(args,"Oi", &object, &time))
 	  return NULL;
 	if (!PyCObject_Check(object)) {
-	  PyErr_SetString(error, "object should be a C object");
+	  PyErr_SetString(dgpyError, "object should be a C object");
 	  return NULL;
 	}
 
@@ -112,7 +113,7 @@ namespace dynamicgraph {
 	try {
 	  obj->display(oss);
 	} catch (std::exception& exc) {
-	  PyErr_SetString(error, exc.what());
+	  PyErr_SetString(dgpyError, exc.what());
 	  return NULL;
 	}
 	return Py_BuildValue("s", oss.str().c_str());
@@ -135,7 +136,7 @@ namespace dynamicgraph {
 	try {
 	  obj->displayDependencies(oss,time);
 	} catch (std::exception& exc) {
-	  PyErr_SetString(error, exc.what());
+	  PyErr_SetString(dgpyError, exc.what());
 	  return NULL;
 	}
 	return Py_BuildValue("s", oss.str().c_str());
@@ -180,12 +181,13 @@ namespace dynamicgraph {
 	try {
 	  signal->get(value);
 	} catch (const dynamicgraph::ExceptionAbstract& exc) {
-	  PyErr_SetString(error, exc.getStringMessage().c_str());
+	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
 	  return NULL;
 	} catch (const std::exception& exc) {
-	  PyErr_SetString(error, exc.what());
+	  PyErr_SetString(dgpyError, exc.what());
+	  return NULL;
 	} catch (...) {
-	  PyErr_SetString(error, "Unknown exception");
+	  PyErr_SetString(dgpyError, "Unknown exception");
 	  return NULL;
 	}
 	std::string valueString = value.str();
@@ -208,12 +210,13 @@ namespace dynamicgraph {
 	try {
 	  name = signal->getName();
 	} catch (const dynamicgraph::ExceptionAbstract& exc) {
-	  PyErr_SetString(error, exc.getStringMessage().c_str());
+	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
 	  return NULL;
 	} catch (const std::exception& exc) {
-	  PyErr_SetString(error, exc.what());
+	  PyErr_SetString(dgpyError, exc.what());
+	  return NULL;
 	} catch (...) {
-	  PyErr_SetString(error, "Unknown exception");
+	  PyErr_SetString(dgpyError, "Unknown exception");
 	  return NULL;
 	}
 	return Py_BuildValue("s", name.c_str());
@@ -239,13 +242,13 @@ namespace dynamicgraph {
 	try {
 	  signal->set(value);
 	} catch (const dynamicgraph::ExceptionAbstract& exc) {
-	  PyErr_SetString(error, exc.getStringMessage().c_str());
+	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
 	  return NULL;
 	} catch (const std::exception& exc) {
-	  PyErr_SetString(error, exc.what());
+	  PyErr_SetString(dgpyError, exc.what());
 	  return NULL;
 	} catch (...) {
-	  PyErr_SetString(error, "Unknown exception");
+	  PyErr_SetString(dgpyError, "Unknown exception");
 	  return NULL;
 	}
 
@@ -267,7 +270,8 @@ namespace dynamicgraph {
 	try {
 	  signal->recompute(time);
 	} catch (const std::exception& exc) {
-	  PyErr_SetString(error, exc.what());
+	  PyErr_SetString(dgpyError, exc.what());
+	  return NULL;
 	}
 	return Py_BuildValue("");
       }
@@ -286,7 +290,8 @@ namespace dynamicgraph {
 	try {
 	  signal->unplug();
 	} catch (const std::exception& exc) {
-	  PyErr_SetString(error, exc.what());
+	  PyErr_SetString(dgpyError, exc.what());
+	  return NULL;
 	}
 	return Py_BuildValue("");
       }
diff --git a/src/signal-caster-py.cc b/src/signal-caster-py.cc
index dff8e5344eaab26668ac599821d9ae652da0617d..2b7185446019cdd9764715d6b610c72b5fc6c548 100644
--- a/src/signal-caster-py.cc
+++ b/src/signal-caster-py.cc
@@ -22,8 +22,6 @@
 namespace dynamicgraph {
   namespace python {
 
-    extern PyObject* error;
-
     namespace signalCaster {
       PyObject* getSignalTypeList(PyObject* /*self*/, PyObject* args)
       {