Ich habe versucht, SWIG zu verwenden. Ich erinnere mich, dass ich es zuvor für die morphologische Analyse mit Human verwendet habe, aber ich habe es nicht richtig untersucht, also habe ich mir eine Notiz gemacht.
Handbuch http://www.swig.org/Doc1.3/Python.html#Python_nn4
Folgen Sie der READ ME für die Installation.
$./configure
$make
$su
$make install
Spielen Sie nach Abschluss der Installation mit dem Beispiel im Handbuch.
Der Inhalt der .i-Datei http://blog.livedoor.jp/yoshichi9/archives/21911908.html参考
Modul Modulname
%{
Name der Header-Datei einschließen
%}
Funktionsaufzählung(Oder.h Datei)
#define(Makrodefinition usw.)
Es scheint.
Erstellen wir nun ein Erweiterungsmodul, das Werte zurückgibt, die einer Normalverteilung folgen.
Bereiten Sie zunächst verschiedene c-Quelldateien vor.
normaldist.h
double normal_distribution(double myu, double sigma, double x);
normaldist.c
#include "normaldist.h"
#include <math.h>
double normal_distribution(double myu, double sigma, double x){
double d;
double coefficient, in_exp;
coefficient = sqrt(2 * M_PI * sigma); //Koeffizient
in_exp = exp( -pow( x - myu, 2 ) / (2 * sigma )); //Der Typ auf der Schulter von exp
d = in_exp / coefficient;
return d;
}
Dann die .i-Datei für swig
normaldist.i
%module normaldist
%{
#define SWIG_FILE_WITH_INIT
#include "normaldist.h"
#include <math.h>
%}
double normal_distribution(double myu, double sigma, double x);
最後にsetup.py
setup.py
from distutils.core import setup, Extension
module1 = Extension('_normaldist',
sources = ['normaldist_wrap.c', 'normaldist.c'])
setup (name = 'normaldist',
version = '1.0',
description = 'This is a normaldist package',
ext_modules = [module1],
py_modules = ["normaldist"],)
Sie müssen lediglich die Befehle der Reihe nach eingeben.
$swig -python normaldist.i
$python setup.py build_ext --inplace
Es sollte _normaldist.so im selben Verzeichnis sein.
Recommended Posts