Faisons un module pour Python en utilisant SWIG

J'ai essayé d'utiliser SWIG. Je me souviens de l'avoir utilisé pour l'analyse morphologique avec Human auparavant, mais je ne l'ai pas étudié correctement, alors j'ai fait une note pour moi-même.

Manuel http://www.swig.org/Doc1.3/Python.html#Python_nn4

Suivez le LISEZ-MOI pour l'installation.

$./configure
$make
$su
$make install

Une fois l'installation terminée, jouez avec l'exemple du manuel.

Le contenu du fichier .i http://blog.livedoor.jp/yoshichi9/archives/21911908.html参考

module Nom du module
%{
inclure le nom du fichier d'en-tête
%}
Énumération des fonctions(Ou.fichier h)
#define(Définition de macro, etc.)

Il semble.

Maintenant, créons un module d'extension qui renvoie des valeurs qui suivent une distribution normale.

Tout d'abord, préparez divers fichiers source c.

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); //coefficient
  in_exp = exp( -pow( x - myu, 2 ) / (2 * sigma ));  //Le gars sur l'épaule de l'exp

  d = in_exp / coefficient;

  return d;
}

Puis le fichier .i pour 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"],)

Tout ce que vous avez à faire est de taper les commandes dans l'ordre.

$swig -python normaldist.i
$python setup.py build_ext --inplace

Il devrait y avoir _normaldist.so dans le même répertoire.

Recommended Posts

Faisons un module pour Python en utilisant SWIG
[Pour jouer] Essayez de faire de Yuma un robot LINE (Python)
Faisons une interface graphique avec python.
Faisons un graphe avec python! !!
Faisons un jeu de shiritori avec Python
Créer un diagramme de relations des modules Python
Créons un environnement virtuel pour Python
Qt pour l'application de bureau de l'application Python
Faisons un site multilingue en utilisant flask-babel
Créez un framework Web avec Python! (1)
Faisons un calcul de combinaison avec Python
Faisons un bot Twitter avec Python!
Créez un framework Web avec Python! (2)
Faisons un plug-in backend pour Errbot
Faisons une discussion WEB en utilisant WebSocket avec AWS sans serveur (Python)!
Créer un module Python
[Python] Exécutons le module régulièrement en utilisant schedule
Remplaçons UWSC par Python (5) Faisons un robot
Analysons les données Covid-19 (Corona) en utilisant Python [Pour les débutants]
Essayez de créer un module Python en langage C
[Jouons avec Python] Créer un livre de comptes de ménage
Essayez de créer un jeu simple avec Python 3 et iPhone
Comment créer un package Python à l'aide de VS Code
[Super facile] Faisons un LINE BOT avec Python.
Mémo de construction d'environnement d'apprentissage automatique par Python
Créons facilement un gif mathématique en utilisant Google Colaboratory
Faisons un robot Discord.
Créer un bookmarklet en Python
Faites une loterie avec Python
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 7 Comment créer un module
Créons un client de socket Web avec Python. (Authentification par jeton d'accès)
Créons une fonction pour le test paramétré à l'aide d'un objet frame
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
Expérimentez pour créer un PDF indépendant pour Kindle avec Python
Comment créer un package Python (écrit pour un stagiaire)
J'ai fait un chronomètre en utilisant tkinter avec python
Créons un bot LINE en utilisant divers services [ngrok edition]
J'ai obtenu "ModuleNotFoundError: aucun module nommé" azure "" lors de l'exécution d'un programme à l'aide du SDK Azure pour Python
Faisons une rumba distante [Logiciel]
J'ai fait un Line-bot avec Python!
Créer une interface graphique python à l'aide de tkinter
Créer une boîte à Tweet pour Pepper
Dessiner une courbe Silverstone en utilisant Python
Faisons un service de vente au comptant 2
Créer un outil de reconnaissance de visage à l'aide de TensorFlow
Faisons un service de vente au comptant 1
python / Créer un dict à partir d'une liste.
[Python] Faire de la fonction une fonction lambda
Créer un système de recommandation avec python
Utilisez Blender comme module Python
[TouchDesigner] Conseils pour la déclaration par python
Essayez d'utiliser le module Python Cmd
Faisons un spacon avec xCAT
[Python] Raison du remplacement à l'aide de super ()
Recherche de l'emplacement du module python mercurial
Faisons un service de vente au comptant 3
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
Créer un environnement de développement local pour Lambda + Python à l'aide de Serverless Framework
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 2