[PYTHON] So richten Sie die Cython-Umgebung ein und kompilieren sie

Erforderliche Umgebung

(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:

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

  1. Stellen Sie sicher, dass die Python-Umgebung mit der Standard-Windows-Shell funktioniert
  2. 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 ...

Installation

Verwenden Sie pip und Sie sind sofort fertig. Ich glaube, ich brauchte keine Administratorrechte ...

$ pip install cython

Überprüfen Sie, ob es kompiliert werden kann

Kopieren Sie den Code aus Cython: Basic Tutorial und prüfen Sie, ob er kompiliert werden kann:

  1. Erstellen Sie ein Entwicklungsverzeichnis. Erstellen Sie hier eine Datei.
  2. Erstellen Sie eine ".pyx" -Datei. Dies ist der Quellcode.
  3. Erstellen Sie eine "setup.py" -Datei. Dies ist die Build-Datei und gibt an, wie sie kompiliert wird.
  4. Öffnen Sie den Terminalemulator im Entwicklungsverzeichnis und führen Sie 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 " festlegen.

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.

Bibliotheksheaderdatei hinzufügen

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

So richten Sie die Cython-Umgebung ein und kompilieren sie
So richten Sie eine Python-Umgebung mit pyenv ein
So richten Sie WSL2 unter Windows 10 ein und erstellen eine Lernumgebung für Linux-Befehle
So richten Sie SVM mit Optuna ein
So richten Sie OMC Log Analytics ein und verwenden es - Linux-Version-
So richten Sie die Entwicklungsumgebung von ev3dev ein [Windows-Version]
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
So richten Sie einen lokalen Entwicklungsserver ein
So richten Sie die Authentifizierung mit öffentlichem Schlüssel mit ssh ein
So bereiten Sie die Umgebung mit Courseras fortgeschrittenem Kurs für maschinelles Lernen auf Google Colab vor
So richten Sie ein VPN-Gateway ein, um eine Verbindung zwischen Alibaba Cloud und AWS herzustellen
Verwendung von Docker zum Containerisieren Ihrer Anwendung und Verwenden von Docker Compose zum Ausführen Ihrer Anwendung in einer Entwicklungsumgebung
So richten Sie Ubuntu für Windows Subsystem für Linux 2 (WSL2) ein
Wie Sie pyenv und pyenv-virtualenv auf Ihre eigene Weise verwenden
Übersicht über die virtuelle Python-Umgebung und deren Erstellung
So legen Sie eine Verknüpfung fest, um in IBus zwischen voller und halber Breite zu wechseln
Hinweise zum Erstellen einer LAMP-Umgebung mit Vagrant und VirtulBox
So erhalten Sie den NTP-Servernamen per DHCP und legen ihn fest
So installieren und verwenden Sie Tesseract-OCR
Verwendung von Umgebungsvariablen für Serverless Framework und Python und Verwaltung von Phasen
So verwenden Sie das Jupyter-Notebook, ohne Ihre Umgebung mit Docker zu verschmutzen
Cython Tutorial: Verwendung von shared_ptr
Richten Sie die Python-Umgebung unter CentOS ein
Verwendung von .bash_profile und .bashrc
So installieren und verwenden Sie Graphviz
So beschleunigen Sie Python-Berechnungen
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
Lösen von Folienrätseln und 15 Rätseln
So richten Sie ein Jupyter-Notebook am SSH-Ziel ein (AWS EC2)
Versuchen Sie ernsthaft, eine Vim-Testumgebung einzurichten (für Python).
[Entwicklungsumgebung] So erstellen Sie einen Datensatz in der Nähe der Produktionsdatenbank
[Blender] So legen Sie shape_key mit dem Skript fest
[Linux] Unterteilen von Dateien und Ordnern
So verpacken und verteilen Sie Python-Skripte
So teilen und speichern Sie einen DataFrame
Wie man die schöne Suppeninstanziierung beschleunigt
So erstellen Sie eine Sphinx-Übersetzungsumgebung
Wie man optuna einstellt (wie man einen Suchraum schreibt)
So installieren und verwenden Sie pandas_datareader [Python]
So erstellen Sie eine NVIDIA Docker-Umgebung
So stellen Sie die Serverzeit auf japanische Zeit ein
So bereiten Sie die Python-Entwicklungsumgebung vor [Mac]
So stellen Sie xg boost mit Optuna ein
Richten Sie Pipenv auf Pycharm in einer Windows-Umgebung ein
So installieren Sie Ihre eigene (Root-) Zertifizierungsstelle
Python: Verwendung von Einheimischen () und Globalen ()
Verwendung von Tensorflow unter Docker-Umgebung
Ist Ihr Netzwerkstapel richtig eingerichtet?
[Python] Berechnen von MAE und RMSE
Verwendung von Python zip und Aufzählung
So fügen Sie der Anaconda-Umgebung ein Python-Modul hinzu
Hinweise zum Ausführen von Cython unter OSX
Verwendung ist und == in Python
Verwendung von pandas Timestamp und date_range
Wie man Fabric installiert und wie man es benutzt
Wie schreibe ich pydoc und mehrzeilige Kommentare