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.