Saya mempunyai program c++ yang dibenamkan dalam python3.11.2. Apabila memanggil skrip python daripada python terbenam (mengimport modul pihak ke-3 serta modul perpustakaan standard) saya mendapat ralat berikut:
excType: 'AttributeError' excValue: AttributeError("module 'abc' has no attribute '__file__'") excTraceback: <traceback object at 0x7f1e48c5f200>
Apabila saya menjalankan skrip daripada python biasa (tidak terbenam), semuanya berfungsi dengan baik dan saya juga dapat mencari atribut fail untuk modul abc.
Saya menyusun python3.11.2 daripada sumber menggunakan konfigurasi berikut: --dayakan-pengoptimuman --dayakan-kongsi --prefix="path/to/my/custom/build/folder/
Perkara yang pelik ialah setiap modul pihak ke-3 yang saya import skrip mempunyai atribut fail dan dimuatkan dengan baik.
Adakah sesiapa mempunyai sebarang pandangan tentang apa yang boleh menyebabkan perkara ini?
Sistem pengendalian saya: ubuntu 22.04.3
Saya menguji modul perpustakaan standard lain seperti os Jika saya memanggil fungsi dalam OS daripada python terbenam, ia berfungsi dengan baik, tetapi atribut fail OS tidak ditemui. Jika saya melakukan ini daripada python tidak terbenam, ia akan menemui atribut fail.
Kemas kini: Saya baru mendapati bahawa python terbenam mempunyai awalan kosong. Bagaimanakah saya boleh menukar awalan ini? Menetapkan pythonhome tidak mengubah apa-apa.
Saya menemui penyelesaiannya dengan menambahkan atribut fail modul secara manual. Saya masih tidak faham mengapa atribut file tidak ditetapkan secara lalai, tetapi ini berfungsi untuk saya sekarang.
Atas ialah kandungan terperinci AttributeError apabila membenamkan python dalam C++ (Ubuntu). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!