Ich habe die C-Erweiterung von Python ausprobiert

Ich habe die erste Hälfte der Python-Erweiterung des Tutorials mit C und C ++ kopiert. Ich dachte daran, Cython zu studieren, aber ich sah zufällig einen Blog-Beitrag über die oben genannte Methode, also wollte ich es versuchen. Ich habe den Eindruck, dass es nicht so schwierig sein wird. Ich kenne die API noch nicht. .. Wirklich quietschen spammodule.c wie es im Tutorial ist. Fügen Sie die Kommentare so ein, wie sie im Text des Tutorials enthalten sind.

spammodule.c


#include <Python.h>

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

  if (!PyArg_ParseTuple(args, "s", &command))
    /*Zeigen Sie auf eine Zeichenfolge, eine Python-Zeichenfolge oder ein Unicode-Objekt
In C-Zeiger konvertieren. "s"Bedeutung von
    */
      return NULL;

  sts = system(command);
  return Py_BuildValue("i", sts);
  /*Ein neues Python-Objekt, das eine formatierte Zeichenfolge und eine beliebige Anzahl von C-Werten als Argumente verwendet
Gib es zurück. "i"Bedeutet ein ganzzahliges Objekt*/
}

static PyMethodDef SpamMethods[] = {
  {"system", spam_system, METH_VARARGS,
   "Beschreibung Führen Sie einen Shell-Befehl aus."},
  {NULL, NULL, 0, NULL}
};


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

Erstellen Sie nach dem sicheren Schreiben die Datei setup.py wie folgt. Ich habe auf diesen Artikel verwiesen.

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])

Der Rest ist in der Kommandozeile

$python setup.py build

(Diesmal ist es ein Experiment, daher werde ich es nicht installieren.) Ausführen. Dann wird ein Verzeichnis namens build direkt unter dem aktuellen erstellt. Ich denke, dass der Inhalt je nach Umgebung unterschiedlich ist, aber wenn Sie den Pfad von spam.so angeben und importieren Es scheint, dass es verwendet werden kann. Ich habe spam.so kopiert und in ein geeignetes Verzeichnis eingefügt (Ist es in Ordnung?) Es war ein passendes Memo.

Recommended Posts

Ich habe die C-Erweiterung von Python ausprobiert
Python C / C ++ - Erweiterungsmusterzeiger
Ich habe Python> autopep8 ausprobiert
Ich habe Python> Decorator ausprobiert
Ich habe versucht, ein Python 3-Modul in C hinzuzufügen
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
[Python] Ich habe sofort versucht, die VS-Code-Erweiterung von Pylance zu verwenden.
Ich habe versucht, Python zu berühren (Installation)
Ich habe versucht, WebScraping mit Python.
Ich habe versucht, Thonny (Python / IDE) zu verwenden.
Ich habe es mit Grumpy versucht (Python ausführen).
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
Ich habe Line Benachrichtigung in Python versucht
Ich habe die SMTP-Kommunikation mit Python versucht
Ich habe versucht, die Behandlung von Python-Ausnahmen zusammenzufassen
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
Wrangle x Python Buch Ich habe es versucht [2]
Ich habe versucht zu kratzen
Ich habe PyQ ausprobiert
Ich habe Python gestartet
Python3-Standardeingabe habe ich versucht zusammenzufassen
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Ich habe AutoKeras ausprobiert
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Python C ++ Notizen
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe eine funktionale Sprache mit Python ausprobiert
Python, openFrameworks (c ++)
Ich habe versucht, mit Python ② (Fibonacci-Zahlenfolge) aufzuklären.
Ich habe versucht, PPO in Python zu implementieren
Ich habe es mit Papiermühle versucht
Python: Ich habe das Problem des Handlungsreisenden ausprobiert
Wrangle x Python Buch Ich habe es versucht [1]
Mayungos Python Learning Episode 8: Ich habe versucht, Eingaben zu machen
[Python] Ich habe versucht, TF-IDF stetig zu berechnen
Ich habe versucht, Yahoo Wetter zu kratzen (Python Edition)
Ich habe versucht, Python zu berühren (grundlegende Syntax)
Ich habe versucht, Django-Slack
Ich habe es mit Django versucht
Ich habe es mit Spleeter versucht
Ich habe es mit cgo versucht
Ich habe das Python Tornado Testing Framework ausprobiert
# Ich habe so etwas wie Vlookup mit Python # 2 ausprobiert
Ich habe Hunderte Millionen SQLite mit Python ausprobiert
[Python] Ich habe versucht, den Funktionsnamen durch den Funktionsnamen zu ersetzen
Python C / C ++ - Erweiterungsmuster-Übergeben Sie Daten als np.array an Python
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich habe versucht, mit Python ein Tippspiel zu spielen
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.