wake-up-neo.com

Was ist Pyximport und wie soll ich es verwenden?

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.

18
guilhermecgs

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

14
Adam Barthelson

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'

1
Roland Puntaier