What is pyximport and how should I use it?

落爺英雄遲暮 提交于 2020-01-19 05:37:08

问题


I am using cython to generate faster code for a mathematical model. I am having a hard time compiling the code, but somehow I managed to do so using a .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

It runs ok...

My question is regarding pyximport. I have old code written by someone else that uses pyximport.install(). I couldn't figure out what it does and why I should use it, since I am already compiling the code by myself. So, can someone explain to me in a very simple (for dummies) way what pyximport does?

Additional information: I have a project1, using cython. I have a project2, that references project1.


回答1:


pyximport is part of Cython, and it's used in place of import in a way.

If your module doesn’t require any extra C libraries or a special build setup, then you can use the pyximport module to load .pyx files directly on import, without having to write a setup.py file. It can be used like this:

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

Straight from the Cython documentation




回答2:


You can use pyximport to automatically recompile and reload your .pyx module.

Remove what setup.py has generated, else you might load that extension module. pyximport does not use setup.py.

Let's assume a hello.pyx with a function mean2.

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

The result:

Out [5]: 2.5

Leave that window and go to your editor to change hello.pyx.

Then go back to IPython and type

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

You will see some text informing about the recompilation. Then the new result:

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



来源:https://stackoverflow.com/questions/15764232/what-is-pyximport-and-how-should-i-use-it

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!