python python-2.7 pydev cython

python - ¿Qué es pyximport y cómo debo usarlo?



python-2.7 pydev (2)

Estoy usando cython para generar código más rápido para un modelo matemático. Me está costando mucho compilar el código, pero de alguna manera logré hacerlo usando un .bat:

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

Funciona bien ...

Mi pregunta es sobre pyximport. Tengo un código antiguo escrito por otra persona que usa pyximport.install (). No pude averiguar qué hace y por qué debería usarlo, ya que ya estoy compilando el código. Entonces, ¿puede alguien explicarme de una manera muy simple (para los tontos) lo que Pyximport hace?

Información adicional: Tengo un proyecto1, usando cython. Tengo un proyecto2, que hace referencia al proyecto1.


Puede usar pyximport para recompilar y recargar automáticamente su módulo .pyx .

Elimine lo que setup.py ha generado, de lo contrario podría cargar ese módulo de extensión. pyximport no utiliza setup.py .

Asumamos un hello.pyx con una función mean2 .

Iniciar 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)

El resultado:

Out [5]: 2.5

Deja esa ventana y ve a tu editor para cambiar hello.pyx .

Luego regresa a IPython y escribe

In [6]: reload(hello);import hello;hello.mean2(2,3)

Verás un texto informando sobre la recompilación. Entonces el nuevo resultado:

Out[6]: ''Mean of 2 and 3 is 2.5''


pyximport es parte de Cython, y se usa en lugar de import de una manera.

Si su módulo no requiere bibliotecas C adicionales o una configuración de compilación especial, entonces puede usar el módulo pyximport para cargar archivos .pyx directamente en la importación, sin tener que escribir un archivo setup.py. Se puede utilizar así:

>>> import pyximport; pyximport.install() >>> import helloworld Hello World

Directamente de la documentación de Cython.