IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

console interactive python dans C++ (sans surcouches type SWIG/PythonQt/Boost etc.)


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre du Club

    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Points : 55
    Points
    55
    Billets dans le blog
    1
    Par défaut console interactive python dans C++ (sans surcouches type SWIG/PythonQt/Boost etc.)
    Bonjour,
    j'aimerais embarquer python pour permettre aux utilisateur de créer des script pour mon application (avec Qt). mon but est de faire une fenêtre qui réagisse un peu comme une console avec interpréteur interactif python, je voudrais réaliser cela uniquement avec l'API python/C sans utiliser de sur-couches (histoire de voir comment ça marche).
    J'ai essayé plusieurs trucs, mais avec des résultat pas trop convaincant.
    par exemple avec PyRun_InteractiveLoop, mais impossible de changer les entrées sortie pour les renvoyer vers le code C++...
    j'ai aussi essayé d'autres trucs mais avec encore moins de succès^^
    J'ai de bonne compétences en C/C++, mais j'aimerais avoir quelque pistes pour savoir quelles fonctions de l'API C de python sont à utiliser pour faire ça...


    Merci d'avance!

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Points : 321
    Points
    321
    Par défaut
    Bonjour,


    Avec un peu de code, il serait plus facile de voir ce que tu veux faire.

    Mais connaissances en C/C++ sont assez limitées (20 ans que je n'ai plus fait
    de C ). En revanche je connais assez bien python.

    Évidemment, pour moi la meilleure solution est de passer par Qt.

    Sinon, a-tu essayé de d'assigner sys.stdout et sys.stderr de python ?

    Petit conseil : si tu veux vraiment te lancer dans ce genre d'aventure, tu as intérêt à connaitre un peu mieux python. En tout cas, maîtriser l'interface c/c++.

    A bientôt

  3. #3
    Membre du Club

    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Points : 55
    Points
    55
    Billets dans le blog
    1
    Par défaut
    Je te remercie (ça fait plaisir de voir qu'on est pas seul au monde^^)

    Sinon, a-tu essayé de d'assigner sys.stdout et sys.stderr de python ?
    ...Je viens de trouver mon probleme pour cette partie, merci de la confirmation que c'est bien ainsi qu'il faut procèder^^

    ...Maintenant, quand j'exécute:
    PyRun_InteractiveLoop(stdin, "<stdin>");
    (code que j'ai pu trouvé à pas mal d'endroit), l'interpréteur n'utilise pas ma fonction write() pour écrire les ">>>" ou "..." est-ce normale?
    (alors que pour les print(...) ou les message d'erreur, il l'utilise)

    autre question, que représente le FILE* passé en parramètre?
    (si je remplace stdin par stdout, ça continue de marcher)
    et enfin, est-il possible d'utiliser un FILE* créé soi-même pour l'input, si oui, comment?

    merci d'avance!

  4. #4
    Membre du Club

    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Points : 55
    Points
    55
    Billets dans le blog
    1
    Par défaut
    entre temps, j'ai aussi réussi à remplacer sys.stdin par un objet perso qui me permet d'utiliser ma propre fonction d'input (qui n'est certe rien d'autre que le dangereux scanf pour le moment, histoire de faire des tests)

    ...Maintenant, j'aimerais savoir comment faire en sorte que ce soit ma fonction qui soit utiliser par PyRun_InteractiveLoop?

    merci d'avance!

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/07/2014, 19h55
  2. Comment ouvrir une console Python dans Eclipse
    Par ptissendier dans le forum Eclipse
    Réponses: 2
    Dernier message: 24/02/2014, 11h12
  3. [QtGui] Une console Python dans un QTextEdit ?
    Par tyrtamos dans le forum PyQt
    Réponses: 19
    Dernier message: 10/02/2013, 18h36
  4. [Débutant] Console interactive
    Par Onarap dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 22/01/2005, 17h00
  5. Valeur par defaut 'True' dans un champ de type bit
    Par Mouse dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo