我正在使用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。 我有一个project2,它引用了project1。
答案 0 :(得分:15)
pyximport是Cython的一部分,它在某种程度上用来代替import
。
如果您的模块不需要任何额外的C库或特殊的构建设置,那么您可以使用pyximport模块在导入时直接加载.pyx文件,而无需编写setup.py文件。它可以像这样使用:
>>> import pyximport; pyximport.install()
>>> import helloworld
Hello World
答案 1 :(得分:1)
您可以使用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'