我有一个用于科学工作的Python包,作为其中的一部分,运行从单个C源文件编译的可执行文件(通过子进程),否则与Python无关(即,它不是扩展名) )。
我们想在包中包含C源代码,这样setup.py(我们使用setuptools)将编译它,包可以通过pkg_resources或者在用户的路径中安装它来访问可执行文件。使用console_scripts生成的脚本。
我们有办法做到这一点吗?出于可维护性的原因,我们不希望将可执行文件转换为C扩展,并且可用命令对我们的用户来说无论如何都有用。
答案 0 :(得分:0)
你几乎回答了自己的问题。什么阻止你做你刚才描述的事情,并创建一个看起来像下面代码片段的setup.py文件。
import subprocess
from distutils.core import setup
code = """
#include <stdio.h>
int main(int argc, char *argv[]){printf("%s\\n", "Hello world.");}
"""
# Write code to file
f = open("main.c", 'w')
f.write(code)
f.close()
# Compile c code
p = subprocess.Popen(["cc", "-O2", "main.c", "-o", "main.out"]).wait()
subprocess.call(["./main.out"])
setup(name='foobar',
version='1.0',
packages=['foobar', 'foobar.subfoo'],
)