4 Stimmen

Python C API: Wie kann man PyRun_String mit Py_eval_input dazu bringen, importierte Module zu verwenden?

PyRun_String("random.randint(1,10)", Py_eval_input, globals, globals);

gibt Fehler mit zurück:

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

früher im Code, habe ich das getan:

PyImport_ImportModule("random");

Ich schätze, das ist nicht der richtige Weg, um es zum Laufen zu bringen. Was ist der richtige Weg? Ich danke Ihnen!

3voto

Duncan Punkte 85702

PyImport_ImportModule gibt den importierten Wert zurück. Sie müssen ihn speichern in globals unter dem Namen random . Zusammengefasst:

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

aber vergessen Sie nicht, auch das Ergebnis des Imports zu überprüfen, falls es zu einer Ausnahme kommt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X