J'ai besoin de lire les variables locales de Python en C/C++. Lorsque j'essaie de PyEval_GetLocals
, j'obtiens une valeur NULL. Cela arrive bien que Python soit initialisé. Ce qui suit est un exemple minimal.Extension Python C: PyEval_GetLocals() retourne NULL
#include <iostream>
#include <Python.h>
Py_Initialize();
PyRun_SimpleString("a=5");
PyObject *locals = PyEval_GetLocals();
std::cout<<locals<<std::endl; //prints NULL (prints 0)
Py_Finalize();
Dans the manual, il dit qu'il retourne NULL si aucun cadre est en cours d'exécution, mais ... il y a une course de cadre!
Qu'est-ce que je fais mal?
Je cours cela dans Debian Jessie.
@martineau Mais même globals retourne NULL! Cela signifie-t-il que ce n'est pas la bonne façon d'obtenir les variables? Parce que j'ai déjà accepté une réponse à ce sujet. http://stackoverflow.com/questions/40041498/python-c-extension-extract-parameter-from-the-engine/40041694#40041694 –
@martineau vérifier que 'PyRun_SimpleString()' fonctionne est très facile. Je peux imprimer des choses et attribuer des choses et cela fonctionne. Suggéreriez-vous un correctif pour cet exemple de code? –
@martineau Cela retourne aussi NULL. Je l'ai mentionné dans ma première réponse à vous :-) –