如何使用嵌入式python脚本编译和运行C代码?

时间:2013-12-30 16:01:50

标签: python c

我在python documentation

中使用此示例
#include <Python.h>
int
main(int argc, char *argv[])
{
  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print('Today is', ctime(time()))\n");
  Py_Finalize();
  return 0;
}

其中python脚本被硬编码到C程序。但是当我尝试通过

进行编译时
$ gcc -c modwithpy.c -o mod

我收到错误:

  

modwithpy.c:1:20:致命错误:Python.h:没有这样的文件或目录   编译终止。

但是,我已经安装了 python-dev 包。我也看了compiling and linking documentation并且不明白我需要编写的python包的绝对路径。

$ whereis python
python: /usr/bin/python3.3m /usr/bin/python /usr/bin/python2.7-config 
/usr/bin/python3.3 /usr/bin/python2.7 /etc/python /etc/python3.3 /etc/python2.7
/usr/lib/python2.6 /usr/lib/python3.3 /usr/lib/python2.7 /usr/bin/X11/python3.3m
/usr/bin/X11/python /usr/bin/X11/python2.7-config /usr/bin/X11/python3.3
/usr/bin/X11/python2.7 /usr/local/lib/python3.3 /usr/local/lib/python2.7
/usr/include/python2.7 /usr/share/python /usr/share/man/man1/python.1.gz

1 个答案:

答案 0 :(得分:4)

你读得不够远。文档here显示了如何告诉编译器python头文件和库的位置。

基于此,请尝试

gcc `/opt/bin/python3.3-config --cflags` modwithpy.c -o mod \
  `/opt/bin/python3.3-config --ldlags`

如果您在其他地方安装了python个脚本,则必须将/opt/bin更改为...-config所在的位置。在whereis跟踪中,它可以是/usr/bin