Ich benutze Cython, um schnelleren Code für ein mathematisches Modell zu generieren. Es fällt mir schwer, den Code zu kompilieren, aber ich habe es irgendwie geschafft, einen .bat zu verwenden:
setlocal EnableDelayedExpansion
CALL "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd" /x64 /release
set DISTUTILS_USE_SDK=1
C:\Python27\python.exe C:\gcsilve\trunk\myproject\myproject\cythonsetup.py build_ext --inplace
PAUSE
Es läuft ok.
Meine Frage bezieht sich auf pyximport. Ich habe alten Code von jemand anderem geschrieben, der pyximport.install () verwendet. Ich konnte nicht herausfinden, was es macht und warum ich es verwenden sollte, da ich den Code bereits selbst kompiliere. Kann mir jemand auf sehr einfache (für Dummies) Weise erklären, was Pyximport macht?
Zusätzliche Informationen: Ich habe ein Projekt1 mit Cython. Ich habe ein Projekt2, das auf Projekt1 verweist.
pyximport ist Teil von Cython und wird in gewisser Weise anstelle von import
verwendet.
Wenn für Ihr Modul keine zusätzlichen C-Bibliotheken oder ein spezielles Build-Setup erforderlich sind, können Sie mit dem Modul pyximport .pyx-Dateien direkt beim Import laden, ohne eine setup.py-Datei schreiben zu müssen. Es kann wie folgt verwendet werden:
>>> import pyximport; pyximport.install()
>>> import helloworld
Hello World
Direkt aus der Cython-Dokumentation
Sie können pyximport
verwenden, um Ihr .pyx
-Modul automatisch neu zu kompilieren und erneut zu laden.
Entfernen Sie das, was setup.py
generiert hat. Andernfalls laden Sie das Erweiterungsmodul. pyximport
verwendet setup.py
nicht.
Nehmen wir an, ein hello.pyx
mit einer Funktion mean2
.
Starten Sie IPython.
In [1]: import pyximport
In [2]: pyximport.install(reload_support=True)
In [3]: from importlib import reload
In [4]: import hello
In [5]: hello.mean2(2,3)
Das Ergebnis:
Out [5]: 2.5
Verlassen Sie dieses Fenster und wechseln Sie in Ihren Editor, um hello.pyx
zu ändern.
Gehen Sie dann zurück zu IPython und geben Sie ein
In [6]: reload(hello);import hello;hello.mean2(2,3)
Es erscheint ein Text, der über die Neukompilierung informiert. Dann das neue Ergebnis:
Out[6]: 'Mean of 2 and 3 is 2.5'