Ich habe ein C++-Programm in Python3.11.2 eingebettet. Beim Aufrufen eines Python-Skripts aus eingebettetem Python (Import von Modulen von Drittanbietern sowie Standardbibliotheksmodulen) erhalte ich die folgende Fehlermeldung:
excType: 'AttributeError' excValue: AttributeError("module 'abc' has no attribute '__file__'") excTraceback: <traceback object at 0x7f1e48c5f200>
Wenn ich das Skript in normalem (nicht eingebettetem) Python ausführe, funktioniert alles einwandfrei und ich kann auch die Dateiattribute für das abc-Modul finden.
Ich habe Python3.11.2 aus dem Quellcode mit der folgenden Konfiguration kompiliert: --enable-optimizations --enable-shared --prefix="path/to/my/custom/build/folder/
Das Seltsame ist, dass jedes Drittanbietermodul, das mein Skript importiert, ein Datei-Attribut hat und einwandfrei geladen wird.
Hat jemand irgendwelche Erkenntnisse darüber, was dies verursachen könnte?
Mein Betriebssystem: Ubuntu 22.04.3
Ich habe andere Standardbibliotheksmodule wie OS getestet. Wenn ich eine Funktion im Betriebssystem von Embedded Python aus aufrufe, funktioniert sie einwandfrei, aber das Attribut Datei des Betriebssystems wird nicht gefunden. Wenn ich dies von einem nicht eingebetteten Python aus mache, wird das Attribut file gefunden.
Update: Ich habe gerade entdeckt, dass eingebettetes Python ein leeres Präfix hat. Wie kann ich dieses Präfix ändern? Das Festlegen von Pythonhome ändert nichts.
Ich habe die Lösung gefunden, indem ich das Attribut Datei des Moduls manuell hinzugefügt habe. Ich verstehe immer noch nicht, warum das Attribut Datei nicht standardmäßig festgelegt ist, aber das funktioniert jetzt bei mir.
Das obige ist der detaillierte Inhalt vonAttributeError beim Einbetten von Python in C++ (Ubuntu). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!