Maison  >  Article  >  développement back-end  >  AttributeError lors de l'intégration de python en C++ (Ubuntu)

AttributeError lors de l'intégration de python en C++ (Ubuntu)

WBOY
WBOYavant
2024-02-10 14:09:04949parcourir

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

Contenu de la question

J'ai un programme C++ intégré dans python3.11.2. Lors de l'appel d'un script Python à partir de Python intégré (importation de modules tiers ainsi que de modules de bibliothèque standard), j'obtiens l'erreur suivante :

excType: 'AttributeError'
excValue: AttributeError("module 'abc' has no attribute '__file__'")
excTraceback: <traceback object at 0x7f1e48c5f200>

Lorsque j'exécute le script à partir d'un python normal (non intégré), tout fonctionne bien et je peux également trouver les attributs de fichier pour le module abc.

J'ai compilé python3.11.2 à partir des sources en utilisant la configuration suivante : --enable-optimizations --enable-shared --prefix="chemin/vers/my/custom/build/folder/

Ce qui est étrange, c'est que chaque module tiers importé par mon script a un attribut file et se charge correctement.

Quelqu'un a-t-il une idée de ce qui pourrait causer cela ?

Mon système d'exploitation : Ubuntu 22.04.3

J'ai testé d'autres modules de bibliothèque standard comme os. Si j'appelle une fonction dans le système d'exploitation à partir de python intégré, cela fonctionne bien, mais l'attribut file du système d'exploitation n'est pas trouvé. Si je fais cela à partir de Python non intégré, il trouve l'attribut file.

Mise à jour : je viens de découvrir que Python intégré a un préfixe vide. Comment puis-je changer ce préfixe ? La configuration de pythonhome ne change rien.


Bonne réponse


J'ai trouvé la solution en ajoutant manuellement l'attribut file du module. Je ne comprends toujours pas pourquoi l'attribut file n'est pas défini par défaut, mais cela fonctionne pour moi maintenant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer