【问题标题】:Cython Fatal Error: Python.h No such file or directoryCython 致命错误:Python.h 没有这样的文件或目录
【发布时间】:2016-04-12 15:24:10
【问题描述】:

我一直在使用 Cython 将我的 Python 文件编译成 C 文件,然后使用 MinGW 从 C 文件创建可执行文件。 Cython 工作正常,我可以在命令行中输入cython test.pyx 并获取一个 C 文件。问题是当我尝试从 C 文件编译可执行文件时。如果我输入 gcc test.c 我会收到以下错误:

test.c:4:20: fatal error: Python.h: No such file or directory
 #include "Python.h"
                    ^
compilation terminated.

非常感谢您的帮助。我正在运行 Windows 7 和 python 3.5。

【问题讨论】:

    标签: python c gcc cython


    【解决方案1】:

    您可能没有安装 python-dev。根据您的操作系统,您需要执行以下操作:

    sudo apt-get install python-dev
    

    你会在 Ubuntu 上做什么

    【讨论】:

    • 顺便说一句:对于python3用户,您需要使用sudo apt-get install python3-dev
    • @The Bndr 没有一个对我有用,我正在开发 ubuntu 18.04。已经安装了两个开发环境。使用pycharm一切都是最新版本。
    【解决方案2】:

    在 gcc 中

    #include "file.h"
    

    告诉 gcc 在 test.c 所在的同一目录中查找文件,并且

    #include <file.h>
    

    表示在gcc包含路径中查找file.h,可以加上-I

    gcc -I/path/to/the/file_h test.c
    

    你可以试试

    #include <Python.h>
    

    另见fatal error: Python.h: No such file or directory

    【讨论】:

    • 这让我摆脱了致命错误:Python.h:没有这样的文件或目录。但是现在我收到以下错误:collect2.exe: error: ld returned 1 exit statusAny Idea 这意味着什么以及如何解决它?
    • ld返回1表示test.c编译成功,但是链接器没有找到Python.h中的函数代码。您需要添加库路径以让链接器知道。请尝试添加“-lpython2.6”进行编译(如gcc -o test test.c -lpython2.6),注意您可能需要更改python的版本。另见stackoverflow.com/questions/14260196/…
    • 我尝试了您提供的代码,这让我回到了我遇到的原始错误。我对C语言了解不多,只想用Cython来创建快速的可执行脚本。
    • 你能把你的代码、命令和错误信息粘贴到 gist 或类似的东西上进行调试吗?
    • 我没有 github 帐户,但我可以用一行告诉你我的代码。在更长的代码上找到问题后。我尝试了旧的print("hello world") 文件。然后我像这样通过命令行运行 cython:cython helloworld.pyx,它给了我一个 C 文件。然后我像这样运行 gcc:gcc helloworld.c。我已经尝试了您的建议以及我在互联网上可以找到的所有其他内容,但我仍然无法弄清楚。
    猜你喜欢
    • 2021-09-19
    相关资源
    最近更新 更多