J'ai essayé l'extension C de Python

J'ai copié la première moitié de l'extension du tutoriel de Python avec C et C ++. Je pensais étudier Cython, mais il m'est arrivé de voir un article de blog sur la méthode ci-dessus, alors j'ai eu envie de l'essayer. J'ai l'impression que ce ne sera pas si difficile. Je ne connais pas encore l'API ou quoi que ce soit. .. Vraiment grincer spammodule.c comme dans le tutoriel. Collez les commentaires tels qu'ils sont dans le texte du didacticiel.

spammodule.c


#include <Python.h>

static PyObject *
spam_system(PyObject *self, PyObject *args)
{
  const char *command;
  int sts;

  if (!PyArg_ParseTuple(args, "s", &command))
    /*Pointez sur une chaîne de caractères, une chaîne Python ou un objet Unicode
Convertir en pointeur C. "s"Sens de
    */
      return NULL;

  sts = system(command);
  return Py_BuildValue("i", sts);
  /*Un nouvel objet Python qui prend une chaîne formatée et un nombre quelconque de valeurs C comme arguments
rends le. "i"Signifie un objet entier*/
}

static PyMethodDef SpamMethods[] = {
  {"system", spam_system, METH_VARARGS,
   "Description Exécuter une commande shell."},
  {NULL, NULL, 0, NULL}
};


PyMODINIT_FUNC
initspam(void)
{
  (void) Py_InitModule("spam", SpamMethods);
}

Après avoir écrit en toute sécurité, créez setup.py comme suit. J'ai fait référence à cet article .

setup.py



from distutils.core import setup, Extension

module1 = Extension('spam',
                    sources = ['spammodule.c'])

setup (name = 'Spam',
       version = '1.0',
       description = 'This is a spam package',
       ext_modules = [module1])

Le reste est sur la ligne de commande

$python setup.py build

(Cette fois c'est une expérience, donc je ne vais pas l'installer) Éxécuter. Ensuite, un répertoire appelé build sera créé directement sous le fichier courant. Je pense que le contenu diffère selon l'environnement, mais si vous spécifiez le chemin de spam.so et l'importez Il semble qu'il puisse être utilisé. J'ai copié et collé spam.so dans un répertoire approprié (est-ce que ça va?) C'était un mémo approprié.

Recommended Posts

J'ai essayé l'extension C de Python
Pointeur de modèle d'extension Python C / C ++
J'ai essayé Python> autopep8
J'ai essayé Python> décorateur
J'ai essayé d'ajouter un module Python 3 en C
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
[Python] J'ai immédiatement essayé d'utiliser l'extension VS Code de Pylance.
J'ai essayé de toucher Python (installation)
J'ai essayé webScraping avec python.
J'ai essayé d'utiliser Thonny (Python / IDE)
J'ai essayé Grumpy (allez exécuter Python).
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la notification de ligne en Python
J'ai essayé la communication SMTP avec Python
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
Livre Wrangle x Python Je l'ai essayé [2]
J'ai essayé de gratter
J'ai essayé PyQ
J'ai commencé Python
Entrée standard Python3 que j'ai essayé de résumer
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé AutoKeras
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
notes de python C ++
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé un langage fonctionnel avec Python
python, openFrameworks (c ++)
J'ai essayé la récurrence avec Python ② (séquence de nombres Fibonatch)
J'ai essayé d'implémenter PPO en Python
J'ai essayé le moulin à papier
Python: j'ai essayé le problème du voyageur de commerce
Livre Wrangle x Python Je l'ai essayé [1]
Mayungo's Python Learning Episode 8: J'ai essayé l'entrée
[Python] J'ai essayé de calculer TF-IDF régulièrement
J'ai essayé de gratter la météo Yahoo (édition Python)
J'ai essayé de toucher Python (syntaxe de base)
J'ai essayé django-slack
J'ai essayé Django
J'ai essayé spleeter
J'ai essayé cgo
J'ai essayé le framework de test Python Tornado
# J'ai essayé quelque chose comme Vlookup avec Python # 2
J'ai essayé des centaines de millions de SQLite avec python
[Python] J'ai essayé de remplacer le nom de la fonction par le nom de la fonction
Modèle d'extension Python C / C ++ - Passez des données à Python en tant que np.array
vprof - J'ai essayé d'utiliser le profileur pour Python
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé la détection d'objets en utilisant Python et OpenCV
J'ai essayé de jouer à un jeu de frappe avec Python
J'ai essayé la méthode des moindres carrés en Python
J'ai essayé L-Chika avec Razpai 4 (édition Python)