Python C API: как получить PyRun_String с Py_eval_input для использования импортированных модулей? - PullRequest
3 голосов
/ 27 мая 2011
PyRun_String("random.randint(1,10)", Py_eval_input, globals, globals);

возвращает ошибку с:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'random' is not defined

ранее в коде, я сделал:

PyImport_ImportModule("random");

Я думаю, это не способ заставить его работать.Какой правильный путь?Спасибо!

1 Ответ

2 голосов
/ 27 мая 2011

PyImport_ImportModule возвращает импортированное значение.Вам необходимо сохранить его в globals под именем random.В итоге:

PyMapping_SetItemString(globals, "random", PyImport_ImportModule("random"));

, но не забудьте также проверить результат импорта на случай, если он выдаст исключение.

...