【发布时间】:2016-04-04 09:36:35
【问题描述】:
我正在尝试将 Python 3 脚本转换为 C,然后将该 C 文件编译为可执行文件。
我有这个简单的 python 脚本:
def greet(name = ""):
print("Hello {0}".format(name if len(name) > 0 else "World"))
greet("Mango")
我已使用以下方法将此脚本转换为 C:
cython greet.py -o greet.c
然后我使用以下代码编译了 C 文件:
cc greet.c -o greet
输入最后一条命令后出现错误:
致命错误:Python.h:没有此类文件或目录编译终止。
收到错误后,我回过头来意识到我使用的是 Python3,并且忘记了“cython”后面的“3”。
所以重新编译了python脚本:
cython3 greet.py -o greet.c
然后尝试使用以下命令重新编译 C 文件:
cc greet.c -o greet
再次失败并抛出同样的错误,所以我在 SO 和 Google 上搜索并发现了这些问题:
- fatal error: Python.h: No such file or directory
- I have Python on my Ubuntu system, but gcc can't find Python.h
- https://askubuntu.com/questions/526708/fatal-error-python-h-no-file-or-directory
这些问题中的这些答案都不起作用。
我已经确定我已经使用apt-get install 和pip install 安装了所有正确的依赖项,遗憾的是我认为它似乎仍然不起作用。
【问题讨论】:
-
第一个示例问题的公认答案 - 您是否尝试改用
sudo apt-get install python3-dev? (注意3)。在 14.04 上,您需要这样做才能获得 py 3 而不是 2 的开发库。 -
@JRichardSnape 是的,我确信我已经在必要时更改了所有 python 版本,但我会再试一次。
-
另请注意 - 您可能需要执行特定于次要版本的命令,例如
install python3.4-dev -
您需要告诉 gcc 标头在哪里(例如,在链接时将带有
-I的路径传递给编译器或将-l传递给库。
标签: python c linux cython ubuntu-16.04