Warum kann PyImport_Import ein Modul nicht aus dem aktuellen Verzeichnis laden?

8

Ich versuche, das Einbettungsbeispiel auszuführen, und ich kann nicht laden ein Modul aus dem aktuellen Arbeitsverzeichnis, wenn ich es nicht explizit zu sys.path hinzufüge, dann funktioniert es:

%Vor%

Sollte Python nicht nach Modulen im aktuellen Verzeichnis suchen?

Edit1 : Versucht, das Modul nur mit:

zu importieren %Vor%

Und es schlägt immer noch mit dem folgenden Fehler fehl:

%Vor%

Edit2 : Aus den sys.path Dokumenten :

  

Wenn das Skriptverzeichnis nicht verfügbar ist (z. B. wenn der Interpreter ist   wird interaktiv aufgerufen oder wenn das Skript von der Standardeingabe gelesen wird   Pfad [0] ist die leere Zeichenfolge, die Python an Suchmodule weiterleitet   im aktuellen Verzeichnis zuerst .

Nicht sicher, was es bedeutet, nicht verfügbar , aber wenn ich sys.path[0] drucke, ist es nicht leer:

%Vor%     
iabdalkader 16.11.2012, 19:00
quelle

3 Antworten

18

Sie müssen PySys_SetArgv(int argc, char **argv, int updatepath) aufrufen, damit die relativen Importe funktionieren. Dadurch wird der Pfad des ausgeführten Skripts zu sys.path hinzugefügt, wenn updatepath auf 0 steht (siehe Dokumente für weitere Informationen).

Folgendes sollte den Trick machen

%Vor%     
Matti Lyra 16.11.2012, 20:33
quelle
0

Ich hatte genau das gleiche Problem und habe es gelöst, indem ich Py_Initialize(); und Py_Finalize();

hinzugefügt habe

Hoffe das kann dir helfen

    
Lahcene AISSA 05.11.2014 11:03
quelle
0

Was ich mit Python 3.5 zu tun hatte, ist PySys_SetPath , um vom cwd location:

importieren zu können %Vor%

Das Q s ist Qt.

    
Aitch 01.01.2017 18:57
quelle