[Python] Hinweise beim Versuch, Numpy mit Cython zu verwenden

Einführung

Was ich diesmal machen möchte, ist ctypedef numpy.float64_t DOUBLE_t Ich möchte definieren. Um dies zu tun Sie müssen cimport numpy machen. Ich möchte diese beiden "ctypedef" und "cimport" machen.

Die Umgebung sieht so aus. OS X, Yosemite Cython 0.23.4 Python 3.4.3

Beim Kompilieren von Cython wird der folgende Fehler angezeigt.

Lesen Sie die Seite Cython 0.23.2-Dokumentation: Erstellen von Cython-Code und erstellen Sie die folgenden zwei Skripts.

test.pyx


import numpy
cimport numpy
ctypedef numpy.float64_t DOUBLE_t

setup.py


from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = 'test',
    ext_modules = cythonize('test.pyx')
    )

Wenn ich damit "python setup.py build_ext --inplace" ausführe, wird der folgende Fehler angezeigt.

error.


sample.c:250:10: fatal error: 'numpy/arrayobject.h' file not found
#include "numpy/arrayobject.h"
         ^
1 error generated.
error: command 'clang' failed with exit status 1

Ich habe eine Fehlermeldung erhalten, dass die Datei fehlt. Es scheint, dass der Pfad anders ist. Wenn Sie sich die Site also etwas früher ansehen, So etwas wie Cython 0.23.2 Dokumentation: Kompilierung

Often, Python packages that offer a C-level API provide a way to find the necessary include files, e.g. for NumPy:

include_path = [numpy.get_include()]

Es schien üblich zu sein. Lassen Sie uns dies vorerst in setup.py einfügen.

setup.py


from distutils.core import setup
from Cython.Build import cythonize
import numpy

setup(
    name = 'test',
    ext_modules = cythonize('test.pyx')
    include_path = [numpy.get_include()]
    )

Wenn ich versuche, dies zu verwenden, wird erneut eine Fehlermeldung angezeigt

error.


Unknown distribution option: 'include_path'

Mir wurde gesagt, dass es keine solche Option gibt. Wenn man sich den Stapelüberlauf usw. ansieht, scheint es, dass nicht jeder "include_path" verwendet, sondern "include_dirs". Versuchen Sie vorerst s / include_path / include_dirs.

setup.py


from distutils.core import setup
from Cython.Build import cythonize
import numpy

setup(
    name = 'test',
    ext_modules = cythonize('test.pyx')
    include_dirs = [numpy.get_include()]
    )

Als ich es versuchte, bestand es (o ・ ω ・ o) Ich weiß nicht, was es ist, aber es sieht so aus, als wäre es getan worden.

Zusammenfassung

include_dirs = [numpy.get_include ()] Es scheint gut zu sein. Es gibt nur wenige Dinge, die auf Japanisch geschrieben sind und neu sind. Wenn Sie also kein Englisch verstehen, gibt es Dinge, die schwierig sind. Ich kompiliere es diesmal, aber es gibt viele Warnungen für "nicht verwendete Funktion", also muss ich es vielleicht beheben? (Da es sich um eine nicht verwendete Funktion handelt, kann sie in Ruhe gelassen werden.)

Recommended Posts

[Python] Hinweise beim Versuch, Numpy mit Cython zu verwenden
Versuch, SQLite3 mit Python zu handhaben [Hinweis]
Python Hinweis: Wenn Sie einer Zeichenfolge einen Wert zuweisen
ImportError beim Versuch, das gcloud-Paket mit der AWS Lambda Python-Version zu verwenden
Ich erhalte einen UnicodeDecodeError, wenn ich versuche, mit Python sqlalchemy eine Verbindung zu Oracle herzustellen
Ich war süchtig danach, Cython mit PyCharm auszuprobieren, also machen Sie sich eine Notiz
Beachten Sie beim Initialisieren einer Liste in Python
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Python: So verwenden Sie Async mit
[Python] Ich möchte nur den Index verwenden, wenn ich eine Liste mit einer for-Anweisung schleife
Verwenden Sie ein Makro, das beim Speichern von Python mit vscode ausgeführt wird
Ich blieb stecken, als ich versuchte, einen relativen Pfad mit relative_to () in Python anzugeben
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
[Hinweis] Eine Geschichte über den Versuch, eine Klassenmethode mit zwei Unterbalken in der Python 3-Serie zu überschreiben.
Ein Hinweis, dem ich beim Erstellen einer Tabelle mit SQL Alchemy verfallen war
[Einführung in Python] Verwenden wir foreach mit Python
Über den Fehler, den ich beim Versuch, Adafruit_DHT von Python auf Raspberry Pi zu verwenden, festgestellt habe
[Python] Erklärt anhand eines konkreten Beispiels, wie die Bereichsfunktion verwendet wird
Ein Gist-Repository, das Sie verwenden können, wenn Sie es mit ansible ausprobieren möchten
Ein Memorandum, weil ich beim Versuch, MeCab mit Python zu verwenden, gestolpert bin
Fehler beim Installieren eines Moduls mit Python pip
Lesen einer CSV-Datei mit Python 2/3
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
[Python] Der Weg zur Schlange (4) Numpy zwicken
Ich möchte MATLAB feval mit Python verwenden
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Ich möchte ein Spiel mit Python machen
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Wickeln Sie C mit Cython für Python ein
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Entscheide dich für einen Laborauftrag mit Python (Fiktion)
Der einfachste Weg, OpenCV mit Python zu verwenden
Die Geschichte des Versuchs, Tensorboard mit Pytorch zu verwenden
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ein Memo beim Erstellen einer Python-Umgebung mit Miniconda
Schritte zum Erstellen eines Twitter-Bots mit Python
Wie man tkinter mit Python in Pyenv benutzt
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Wrap C ++ mit Cython zur Verwendung von Python
Fehler beim Versuch, psycopg2 in Python zu installieren
Ich möchte mit Python in eine Datei schreiben
Zubu Amateur will Python starten
Materialien zum Lesen, wenn Sie mit Python beginnen
Python-Skript zum Abrufen von Notizinformationen mit REAPER
Es ist bequemer, csv-table zu verwenden, wenn Sie eine Tabelle mit Python-Sphinx schreiben
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Wenn Sie einen Discord-Bot mit Python erstellen möchten, verwenden wir ein Framework
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Mecab mit Python 3
Verwenden Sie DynamoDB mit Python
Verwenden Sie Python 3.8 mit Anaconda
Verwenden Sie Python mit Docker
Beachten Sie, dass Python ein Daemon ist
Wie benutzt man numpy?
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Memo mit Python mit HiveServer2 von EMR verbunden