我有一个基准测试套件,它比较了不同的方法来编写和执行一些简单的玩具Python代码,主要是为了说明Cython。使用distutils编译不带输出名称的纯C代码
我曾经有过的方法之一是在纯C中编写测试函数,用C编译器编译它(让distutils为我找到并调用编译器),然后使用ctypes将该库加载到Python中,并执行该功能。
这一直很流行,直到distutils开始将python版本和平台嵌入到它生成的文件名中。
在过去,我可以说服的distutils编译称为C.c
C源文件到图书馆的工作目录下名为C.so
:最近的distutils版本坚持重整输出名称到形式build/temp.linux-x86_64-3.6
或某事(这依赖于什么distutils功能我使用)一些其他variaton在那个主题。
有没有什么办法可以说服当前版本的distutils只是在当前工作目录中调用输出C.so
? (另外,有一些方法可靠而方便地告诉ctypes的地方通过的distutils产生的库所在?)
[奖励:?怎么可以这样的想法可以跨Linux,OS X和Windows便携表示]
= ================================================== ==============
编辑:为完整,这里是我用来成功地做到这一点,在过去:
pure_C_setup.py
:
from distutils.core import setup, Extension
setup(name="ctypes-test",
ext_modules = [Extension("C", ["C.c"])])
用上面的设置文件,命令python pure_C_setup.py install --install-lib=.
用于在工作目录下产生C.so
;今天它生产build/lib.linux-x86_64-3.6/C.cpython-36m-x86_64-linux-gnu.so
从ditutils.core.Extension的文档,我不知道,如果你正在尝试做的是可能的。我可能是错的。 – SRC