Comments on: Embeder Python dans du C ou C++ http://sametmax.com/embeder-python-dans-du-c-ou-c/ Du code, du cul Mon, 28 Oct 2019 11:54:55 +0000 hourly 1 https://wordpress.org/?v=4.9.7 By: Sam http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-183152 Tue, 29 Nov 2016 17:05:37 +0000 http://sametmax.com/?p=15727#comment-183152 Va sur indexerror.net

]]>
By: Sam http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-182760 Wed, 16 Nov 2016 13:58:15 +0000 http://sametmax.com/?p=15727#comment-182760 Va plutôt poster ça sur indexerror, ça sera plus facile de t’aider là bas.

]]>
By: zizou http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-182758 Wed, 16 Nov 2016 13:17:15 +0000 http://sametmax.com/?p=15727#comment-182758 bonjour

merci beaucoup pour cet article j ai fait quelque teste ca marche tres bien mais j ai un petit problème quand j essaye d intégré une bibliothèque (beautifulsoup)

j ai mon fichier prog.c:

include <stdlib.h>

include <stdio.h>

include <string.h>

include “Python.h”

int main () {

// PyObject est un wrapper Python autour des objets qu’on

// va échanger enter le C et Python.

PyObject *retour, *module, *fonction, *arguments;

char *resultat;

char test[]=”lien_1.html”;

// Initialisation de l’interpréteur. A cause du GIL, on ne peut

// avoir qu’une instance de celui-ci à la fois.

Py_Initialize();

// Import du script. 
PySys_SetPath("."); // Le dossier en cours n'est pas dans le PYTHON PATH
module = PyImport_ImportModule("prog");

// Récupération de la fonction
fonction = PyObject_GetAttrString(module, "yolo");

// Création d'un PyObject de type string. Py_BuildValue peut créer
// tous les types de base Python. Voir :
// https://docs.python.org/2/c-api/arg.html#c.Py_BuildValue
arguments = Py_BuildValue("(s)", test); 

// Appel de la fonction.
retour = PyEval_CallObject(fonction, arguments);

// Conversion du PyObject obtenu en string C
PyArg_Parse(retour, "s", &resultat);

printf("Resultat: %s\n", resultat);

// On ferme cet interpréteur.
Py_Finalize(); 
return 0;

}

et mon fichier prog1.py

!/usr/bin/env python

– coding: utf-8 –

from bs4 import BeautifulSoup

def yolo(arg):

fichier = open(arg,”r”)

soup = BeautifulSoup(fichier,”lxml”)

fichier.close()

fichier2 = open(“lien_1.txt”,”w”)

for p in soup.find_all(‘p’):

fichier2.write(str(p))

fichier.close()
return arg

mais j ai une erreur de segmentation pouvez vous m aider svp

merci par avance

]]>
By: Martin http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-182043 Fri, 21 Oct 2016 15:59:47 +0000 http://sametmax.com/?p=15727#comment-182043 Bonjour,

je viens d’essayer de compiler votre code en C++ mais j’obtiens l’erreur suivante :

g++ -I/usr/include/python2.7 prog.cpp -lpython2.7 -o prog && ./progprog.cpp: In function ‘int main()’:

prog.cpp:17:22: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

PySys_SetPath(“.”); // Le dossier en cours n’est pas dans le PYTHON PATH

^

Resultat : LEROY JENKINS !!

Comment y remédier ?

Merci bien :)

]]>
By: Raito Bezarius http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-153937 Fri, 16 Jan 2015 08:20:37 +0000 http://sametmax.com/?p=15727#comment-153937 En C++, si t’as accès à Boost, tu peux aussi utiliser Boost.Python.

]]>
By: Sam http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-153880 Wed, 14 Jan 2015 12:49:59 +0000 http://sametmax.com/?p=15727#comment-153880 @Gnukos : typo.

@Sabcat: python est portable par défaut. En plus l’interpréteur est déjà installé sur Mac et Linux. Par contre, avec la compile, tu peux rentre ton code indépendant de l’installation manuelle de la VM par l’utilisateur. Mais c’est pas le meilleur moyen de le faire. Comme signalé dans l’article, PyInstaller, Nuitka, ou juste un installeur qui installe la VM, on obtient un meilleur résultat en se faisant moins chier.

]]>
By: Sabcat http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-153877 Wed, 14 Jan 2015 12:09:37 +0000 http://sametmax.com/?p=15727#comment-153877 Ha yes. Donc là, on peut faire un prog portable :)

]]>
By: Gnukos http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-153876 Wed, 14 Jan 2015 11:54:57 +0000 http://sametmax.com/?p=15727#comment-153876 Cool !!

Pourquoi tu retourne 1 dans ta fonction main? C’est 0 pour dire que tout c’est bien passé ;-) et même EXIT_SUCCESS si tu veux le faire en plus mieux bien XD

]]>
By: Sam http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-153873 Wed, 14 Jan 2015 10:35:04 +0000 http://sametmax.com/?p=15727#comment-153873 Il faut Python installé sur le système sur lequel le programme est compilé, mais pas installé. En Java, il y a http://www.jython.org/.

]]>
By: Seb http://sametmax.com/embeder-python-dans-du-c-ou-c/#comment-153872 Wed, 14 Jan 2015 10:15:35 +0000 http://sametmax.com/?p=15727#comment-153872 Cool ce truc ! Est-ce que le code compilé fait appel aux libs python présentes sur le système ? En d’autres termes, est-ce que le prog fonctionne correctement si python n’est pas installé sur la machine ?

As-tu un lien pour faire la même chose en java ?

]]>