(Hinzugefügt am 2020.04.05) Für Windows ist der Weg zum Kompilieren ziemlich verwirrend. Es gibt verschiedene Hinweise auf der offiziellen Seite von Ichiou Cython, aber ... es ist mühsam zu lesen:
- Artikel zum Abrufen einer Python-Kompilierungsumgebung: Für neuere Versionen benötigen Sie anscheinend Windows SDK C / C ++ Compiler .. Grundsätzlich benötigen Sie einen Compiler für die Version des Windows SDK, auf der Python basiert (weitere Informationen finden Sie unter Diese Python-Wiki-Seite).
- Tipps zur Installation mit Anaconda usw.: Hier gibt es nicht viele neue Informationen, aber nur für den Fall
Um den Compiler von Cython verwenden zu können, muss Python (Cython) auf einem Terminalemulator ausgeführt werden, wobei die Build-Umgebung korrekt eingerichtet ist. Das einfachste ist
- Stellen Sie sicher, dass die Python-Umgebung mit der Standard-Windows-Shell funktioniert
- Starten Sie die Visual Studio-Eingabeaufforderung und führen Sie dort die Datei setup.py von Python aus
Wenn Sie jedoch die virtuelle Umgebung von Anaconda verwenden möchten, kann dies sehr verwirrend sein. Wo und welche Umgebungsvariablen sollten während des Versuchs und Irrtums eingerichtet werden, damit sie an der Anaconda-Eingabeaufforderung verwendet werden können ...
Verwenden Sie pip und Sie sind sofort fertig. Ich glaube, ich brauchte keine Administratorrechte ...
$ pip install cython
Kopieren Sie den Code aus Cython: Basic Tutorial und prüfen Sie, ob er kompiliert werden kann:
python setup.py build_ext --inplace
aus. Unter Windows müssen Sie dies an der Entwickler-Eingabeaufforderung tun, um die erforderlichen Befehle zu verwenden und Dateien einzuschließen.Wenn Sie setup.py
ausführen, dürfen Sie die Option --inplace
nicht hinzufügen oder sie kann in der Python-Bibliothek installiert sein (unbestätigt).
Wenn die Kompilierung erfolgreich ist, wird setup.py mit der Meldung "Fertig" beendet. In diesem Fall können Sie die kompilierte Datei importieren, indem Sie in der Python-Konsole "import
Wenn die Kompilierung jedoch fehlschlägt, wird die Meldung "Fehlgeschlagen" angezeigt. Sie können weitere Details zum Fehler anzeigen, indem Sie kurz vor der Ausgabe des Terminalemulators zurückgehen. Die meiste Zeit denke ich, dass es ein Fehler in der .pyx-Datei ist oder die Include / Link-Datei fehlt.
Auszug aus Stack Overflow Answer.
Bei Verwendung von numpy aus Cython sind die C-Header-Dateien der numpy-Bibliothek erforderlich. Es ist leicht zu verstehen, wenn direkt mit gcc oder ähnlichem kompiliert wird, aber die Option -I
kann beim Kompilieren über setup.py nicht verwendet werden.
Verwenden Sie in diesem Fall das Extension
-Objekt von distutils
:
setup.py
from distutils.core import setup, Extension
from Cython.Build import cythonize
import numpy
setup(
ext_modules=[
Extension("my_module", ["my_module.c"],
include_dirs=[numpy.get_include()]),
],
)
Das zweite Argument in diesem Fall gibt eine Liste der Quelldateien an (absoluter oder relativer Pfad). Listen Sie die Include-Pfade auf, die Sie mit dem Schlüsselwortargument include_dirs
hinzufügen möchten.
Oder wenn Sie sich die Cython-Dokumentation ansehen (http://cython.readthedocs.io/en/latest/src/reference/compilation.html), hat das cythonize ()
selbst eine Option namens include_dirs
. Anscheinend:
setup.py
from distutils.core import setup
from Cython.Build import cythonize
setup(
name = "My hello app",
ext_modules = cythonize("src/*.pyx", include_path = [...]),
)
numpy
bietet eine Funktion namens get_include ()
, so dass Sie sie verwenden können, und sogar native Bibliotheken können pkg-config oder eine beliebige Ausgabe verwenden.
Recommended Posts