AttributeError beim Einbetten von Python in C++ (Ubuntu)

WBOY
Freigeben: 2024-02-10 14:09:04
nach vorne
947 Leute haben es durchsucht

在 C++ 中嵌入 python 时出现 AttributeError (Ubuntu)

Frageninhalt

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>
Nach dem Login kopieren

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.


Richtige Antwort


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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!