diff --git a/include/dap_chain_plugins_list.h b/include/dap_chain_plugins_list.h
index c0ae76c19f9dadd27a55991478e33e25736de715..7eec9695ed9afaf09efee441b6c1110854d14831 100644
--- a/include/dap_chain_plugins_list.h
+++ b/include/dap_chain_plugins_list.h
@@ -31,6 +31,7 @@ dap_chain_plugin_list_module_t* dap_chain_plugins_list_get();
 bool dap_chain_plugins_list_check_load_plugins(dap_chain_plugins_list_char_t *list);
 
 void dap_chain_plugins_list_add(PyObject *module, const char *name);
+void dap_chain_plugins_list_name_del(const char *name);
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/python-cellframe b/python-cellframe
index 873d35d455186ff621a1515e1f1235e4c194843a..10d968ce8ea69a7a2e05750a8ec0ef5ebba1ceb9 160000
--- a/python-cellframe
+++ b/python-cellframe
@@ -1 +1 @@
-Subproject commit 873d35d455186ff621a1515e1f1235e4c194843a
+Subproject commit 10d968ce8ea69a7a2e05750a8ec0ef5ebba1ceb9
diff --git a/src/dap_chain_plugins.c b/src/dap_chain_plugins.c
index 98a8822e77cd30f2b7e3a213245e8bbaba290f36..e3ed1e3e49944ee491c88fb61cca10d904716e9d 100644
--- a/src/dap_chain_plugins.c
+++ b/src/dap_chain_plugins.c
@@ -36,9 +36,6 @@ int dap_chain_plugins_init(dap_config_t *config){
     }
     return 0;
 }
-void dap_chain_plugins_deinit(){
-    Py_Finalize();
-}
 
 void dap_chain_plugins_loading(){
     log_it(L_NOTICE, "Loading plugins");
@@ -123,3 +120,23 @@ void dap_chain_plugins_load_plugin(const char *dir_path, const char *name){
     }
 }
 
+void dap_chain_plugins_deinit(){
+    log_it(L_NOTICE, "Deinit python plugins");
+    dap_chain_plugin_list_module_t *plugins = dap_chain_plugins_list_get();
+    dap_chain_plugin_list_module_t *plugin;
+    dap_chain_plugin_list_module_t *tmp;
+    PyObject *res_int = NULL;
+    LL_FOREACH_SAFE(plugins, plugin, tmp){
+        PyObject *func_deinit = PyObject_GetAttrString(plugin->obj_module, "deinit");
+        if (func_deinit != NULL || PyCallable_Check(func_deinit)){
+            res_int = PyEval_CallObject(func_deinit, NULL);
+        } else {
+            log_it(L_WARNING, "For plugin %s can't callable function deinit", plugin->name);
+        }
+        DAP_FREE(plugin->name);
+        Py_XDECREF(plugin->obj_module);
+        LL_DELETE(plugins, plugin);
+    }
+    Py_Finalize();
+}
+
diff --git a/src/dap_chain_plugins_list.c b/src/dap_chain_plugins_list.c
index 69ef5203523a41c86b66a366e34398512853464c..cac4d70334b147c176f2ea24d351118ebc9fb448 100644
--- a/src/dap_chain_plugins_list.c
+++ b/src/dap_chain_plugins_list.c
@@ -38,3 +38,20 @@ bool dap_chain_plugins_list_check_load_plugins(dap_chain_plugins_list_char_t *li
     return true;
 }
 
+void dap_chain_plugins_list_name_del(const char *name){
+    dap_chain_plugin_list_module_t *plugin;
+    dap_chain_plugin_list_module_t *tmp;
+    bool plugin_searcging = false;
+    LL_FOREACH_SAFE(m_dap_chain_plugins_module_list, plugin, tmp){
+        if (strcmp(plugin->name, name) == 0){
+            DAP_FREE(plugin->name);
+            Py_XDECREF(plugin->obj_module);
+            LL_DELETE(m_dap_chain_plugins_module_list, plugin);
+            plugin_searcging = true;
+        }
+    }
+    if (!plugin_searcging){
+        log_it(L_WARNING, "Can't searching plugins %s for delete", name);
+    }
+}
+