On 13.01.2017 12:46, David Bellot wrote:
- or encapsulate each plugin in an independent "environment" ? Hard to tell without knowing these plugins. Right now it sounds like that's a question only you can answer. :-)
The plugins are quite simple in fact:
The Python code define a few functions like
def on_value_update(x): blah blah blah return foobar
and they can have global variables (if it's a problem I can forbid user's to use those global variables in their plugins).
For avoidance of doubt: "global variables" aren't variables in module-scope (they are still "local" to the module, and don't cause any problem.)
Each plugin is defined in a .py file and at runtime I load all those files, one after each other.
That sounds all good. Each plugin corresponds to a Python module (which is an object), and you can call module-level functions (such as 'on_value_update') on that object as if it was a method. So if you keep a list of module objects in your C++ runtime, you can access their methods without any global functions colliding. (See http://boostorg.github.io/python/doc/html/tutorial/tutorial/embedding.html#t... for how to embed Python code into your C++ app.) In case that doesn't help, can you explain where in your current setup the plugin methods overwrite each other as they are loaded ? Stefan -- ...ich hab' noch einen Koffer in Berlin...