什么是pyximport,我应该如何使用它?(What is pyximport and how s

2019-08-19 00:40发布

我使用用Cython来生成一个数学模型更快的代码。 我有一个很难编译代码,但不知何故,我设法做到使用.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

它运行确定...

我的问题是关于pyximport。 我有旧代码别人写的使用pyximport.install()。 我无法弄清楚它做什么和为什么我要使用它,因为我已经被自己编译代码。 因此,有人可以在(傻瓜)很简单的方法做什么pyximport解释一下吗?

其他信息:我有一个PROJECT1,使用用Cython。 我有一个项目2,引用PROJECT1。

Answer 1:

pyximport是用Cython的一部分,它是用于替代import的方式。

如果你的模块不需要任何额外的C库或特殊构建设置,那么你可以使用pyximport模块加载.pyx文件直接进口,而无需编写一个setup.py文件。 它可以像这样使用:

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

直接从用Cython文件



Answer 2:

您可以使用pyximport自动重新编译和重新加载您.pyx模块。

删除什么setup.py已经产生,否则你可能会加载扩展模块。 pyximport不使用setup.py

让我们假设一个hello.pyx与函数mean2

启动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)

结果:

Out [5]: 2.5

离开该窗口,并转到您的编辑器来更改hello.pyx

然后回到IPython的和类型

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

你会看到一些文本通知关于重新编译。 然后新的结果:

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



文章来源: What is pyximport and how should I use it?