Retourner aux forums || Retourner au forum Programmation.python
Programmation.python : Implementation d interpreteur python
Posté par eastwind (Jabber id, ) le 11 août 2005Comment implémenter un interpreteur python dans une application deja existante ( et non programmer en python ) ?
Pendant mes surfs , je trouves beaucoup de softs sympa , mais j aurais bien voulu y ajouter un script ou 2 , histoire de me faciliter la vie .
Mais voila il n'y a pas d interpréteur python dans le soft ...
Quelqu un a une idée ? une piste ?
> Lire le message (10 commentaires, moyenne: 1,7).
Beh
J'sais pas si c'est l'heure qui veut va, mais je n'ai rien capté de ce que tu veux faire...
le python, c'est bon
-
[^]30 minutes plus tard...
Posté par cho7 (page perso, ) le 11/08/2005 à 21:16. (lien). Évalué à 2.Mon cerveau se remet lentement en marche.
Bon, je vois ton truc comme ca :
comment implémenter un interpréteur de macro en python dans un programme (un peu comme le VBA de m$ Office) pour pouvoir en automatiser certaines taches.
J'ai bon ?
Autrement non désolé je ne vois vraiment pas ce que tu veux... :(--
le python, c'est bon
-
[^]Re: enrich your C/C++ application by embedding Python in it.
Posté par arno () le 11/08/2005 à 21:21. (lien). Évalué à 2.Je crois qu'il parle de va http://docs.python.org/ext/embedding.html(...) :p
-
[^]Re: enrich your C/C++ application by embedding Python in it.
-
ça peut etre simple !
on peut faire une version (très) simplifiée de la chose comme ceci :
soit le fichier source py.c suivant
#include <stdio.h>
#include <Python.h>
int main(int argc, char ** argv) {
FILE *fp;
if (argc != 2) {
printf("usage: %s script.py \n", argv[0]);
return -1;
}
Py_Initialize ();
if (Py_IsInitialized () == 0) {
printf("echec lors de l'initalisation interpreteur python ! (exiting)\n");
return -1;
}
if ((fp = fopen(argv[1], "r")) == NULL) {
printf("echec lors de la lecture du script python %s ! (exiting)\n", argv[1]);
return -1;
}
if (PyRun_SimpleFile (fp, argv[1]) != 0) {
printf("echec lors de l'execution du script python! (exiting)\n");
fclose (fp);
return -1;
}
fclose (fp);
Py_Finalize ();
if (Py_IsInitialized () != 0) {
printf("echec lors de fermeture de l'interpreteur python ! (exiting)\n");
return -1;
}
return 0;
}
que l'on compile ainsi gcc -Wall py.c -o py -I/usr/include/python2.3 -lpython2.3 (à modifié selon la version de python installé)
soit script le python suivant (test.py):
#!/usr/bin/env python
print "coucou de python"
on utilise le tout ainsi :
./py.c test.py
et le resultat est
[manu@electron][23:12]
[~]
>./py test.py
coucou de python
[manu@electron][23:13]
[~]
>
voilà, voilà c'est une version simplifiée de ce qu'on peut faire, pour des trucs plus avancées je te conseille de te reporter à l'API C de python qui est somme toute assez simple (à coté de la monstruosité de celle de Perl, mais ça n'engage que moi ;-) )
M.
-
[^]Re: ça peut etre simple !
Posté par Sylvain (Jabber id, page perso, ) le 11/08/2005 à 22:14. (lien). Évalué à 0.un simple shell execute "python script.py" ?
-
[^]Re: ça peut etre simple !
Posté par kolter (page perso, ) le 12/08/2005 à 03:07. (lien). Évalué à 2.pas un shell, mais un programme en C avec l'interpreteur python embarqué !
M.-
[^]un peu comme le VBA de m$ Office
Posté par d-jo (page perso, ) le 12/08/2005 à 05:55. (lien). Évalué à 0.Apres, pour que ce soit praticable, il faut que le programme soit conçu pour être scipté.
Personnellement, je pense qu'une bonne solution est d'implementer le pattern Command (comme pour faire un undo, redo).
En empilant tes commandes, puis en les traitant (avec une grammaire ?), tu peux même te faire un enregistreur de macro.-
[^]Re: un peu comme le VBA de m$ Office
Posté par kolter (page perso, ) le 12/08/2005 à 07:16. (lien). Évalué à 2.Apres, pour que ce soit praticable, il faut que le programme soit conçu pour être sc[r]ipté
c'est evident et c'est tout à fait faisable, mais j'ai juste donné un exemple simplifié (comme je l'ai précisé). Il faut que dans le programme C , il soit définit des bindings internes qui puissent etre utilisés dans le script python qui est interprété!
pour les reste de ton commentaire, je comprends pas trop ce que tu veux dire (enfin si , mais je vois pas le rapport avec la question !)
M.
-
-
-
Boost.Python
Boost.Python permet de faire ça je crois :
http://www.boost.org/libs/python/doc/index.html(...)
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.python



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.