我在RedHat上写了一个小程序:
#include <Python.h>
#include <stdio.h>
int main() {
printf("Hello, Python!\n");
return 0;
}
并收到以下错误:
main.c:1:20:致命错误:Python.h:没有这样的文件或目录
所以我找到了以下答案:fatal error: Python.h: No such file or directory
安装了python-devel。我验证/usr/include/python2.7/Python.h
存在,但仍然遇到相同的错误。
当然,在运行gcc main.c -I/usr/include/python2.7/
时,一切都很好。
我的问题是:
在编译时添加-I/usr/include/python2.7/
是否正确,或者是否存在某种gcc应该期望的内置env变量(类似于PYTHON_DEV_HOME)。
我相信这是一个奇怪的问题,但我问的原因是因为我得到TensorFlow(git cloned)的相同错误,这应该是蝙蝠编译。既然不是,我认为我的环境缺少某些东西......
答案 0 :(得分:1)
您通常应该使用-I指定它,但是 - 要回答问题 - 您还可以设置CPATH环境变量:
export CPATH=:/usr/include/python2.7/
和gcc将在此目录中搜索包含,而不需要任何其他开关。
答案 1 :(得分:1)
这完全正常。
您不能指望gcc
读取Python环境变量 - gcc
独立于Python且与之无关。 Python可以使用gcc
,也可以使用(可能)成千上万的其他产品,但其他编译器也应该可用。
gcc
个环境变量here。看一下可以用CPATH
代替-I
的{{1}},但请务必仔细阅读它的作用。 C_INCLUDE_PATH
是另一种选择。