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
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
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); }
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
Partager