在Python内编译运行时生成的C代码

时间:2019-01-31 15:15:35

标签: python c compilation

我正在Python的运行时生成一些C代码。将这段代码编译成可以从Python调用的 something 的最佳方法是什么?我知道我可以做到:

import subprocess
from ctypes import cdll
subprocess.run(['gcc', '-shared', '-o', 'tempfile.so', 'tempfile.c'])
main_function = cdll.LoadLibrary('tempfile.so').main

但是要解决与此解决方案有关的所有极端情况和可移植性问题,还有很多工作要做。我希望这是一个足够普遍的问题,它具有一个标准的解决方案,可以将困难的部分抽象化(查找已安装的编译器,写入临时目录,处理错误,清理垃圾等)。

我发现weave可以做到这一点,但这仅是Python 2。我正在使用Python 3。

这不是有关如何导入已编译的C代码的问题。我对ctypes很熟悉。

这也不是关于生成易于处理的不同代码的问题。我熟悉numbacython,它们会编译Python代码,但是除非它们具有隐藏的功能以接受纯C代码,否则它们将无法工作,因为C代码是由外部工具生成的。

0 个答案:

没有答案