Bonjour,

Je tente de faire un module, j'ai un soucis il semblerai que mon code produise une erreur qui entraine la fermeture de python ( peut être erreur de segmentation). Je peux utiliser mon module dans python il me retourne un résultat correcte mais quand je ferme IDLE, un fenêtre d'erreur apparait et ne dit que pythonw.exe à rencontrer une erreur et doit fermer.( Dans eclispe je ne rencontre cependant aucune erreur)

voici le code du fichier calculs.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "Python.h"
#include "numpy/arrayobject.h"
 
static void tab(long ksize ,npy_float64 *kernel)
 
{
	int i;
	for(i=0.;i<ksize;i++)
		kernel[i]=i;
}
 
static PyObject *Py_tab(PyObject *obj, PyObject *args)
{
	PyObject *okernel;
	PyArrayObject *kernel=NULL;
 
	if (!PyArg_ParseTuple(args,"O",&okernel))
	{	
		PyErr_SetString(PyExc_ValueError,"tab :Invalid number of parametre");
		goto _fail;
	}
 
	kernel = (PyArrayObject *) PyArray_ContiguousFromAny(okernel, NPY_FLOAT64, 1, 1);
 
	if (!kernel) goto _fail;
 
	tab(kernel->dimensions[0], (npy_float64 *) kernel->data);
	Py_DECREF(kernel);
	return PyArray_Return(kernel);
 
	_fail:
		Py_XDECREF(kernel);		
		return NULL;
}
 
static PyMethodDef tabmethod[]={	
	{"tab",Py_tab,METH_VARARGS,"aide"},
	{NULL,NULL,0,NULL}
};
 
PyMODINIT_FUNC initsavoir(void)
{	
	import_array();	
	(void) Py_InitModule("savoir",tabmethod);
}
et le fichier setup.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy
def configuration(parent_package='',top_path=None):
	from numpy.distutils.misc_util import Configuration
 	config = Configuration("savoir",parent_package,top_path)
 	config.add_extension('savoir', 
 						sources=["calculs.c"],
 						include_dirs=[numpy.get_include()])
 	return config
 
if __name__ == "__main__":
 	from numpy.distutils.core import setup
 	config = configuration(top_path='').todict()
 	setup(author='t',author_email='thi@hotmail.fr',
 		description='essai',version="1",**config)

J'ai equalement d'autre question:
  • Comment récupérer un tableau python "normal" et le parcourir

  • Existe t-il des fonctions déjà définie en c pour réaliser des somme de tableau, des exponentiel et multiplication.

  • sinon si ca faut le cout peut on recuperer les fonction de numpy pour realiser les operation cité au-dessus