Accueil > Code > Interpréteur Python dans du code C, avec variables séparées

Interpréteur Python dans du code C, avec variables séparées

dimanche 26 mars 2006, par Nicolas

Crossfire comporte un plugin permettant d’exécuter des scripts Python. Un des problèmes posés était que les variables Python persistaient entre les exécutions de scripts. Après un passage sur #python, la solution suivante est apparue.

   dict = PyDict_New();
   PyDict_SetItemString(dict, "__builtins__", PyEval_GetBuiltins());
   ret = PyRun_File(scriptfile, scriptname, Py_file_input, dict, dict);
   if (PyErr_Occurred()) {
       PyErr_Print();
   }
   Py_XDECREF(ret);
   Py_DECREF(dict);

En l’occurrence l’utilisation de la fonction PyEval_GetBuiltins.

Cela fonctionne, peut-être qu’il reste des références pas libérées, difficile à dire...

De plus la fonction n’est pas documentée, donc changera peut-être sur une prochaine version de Python.