从cython编译c-extension,“.data'节中的错误重定位地址0x0”,“Python.h:没有这样的文件或目录”

时间:2017-02-25 10:24:53

标签: windows compiler-errors mingw cython python-3.6

我已经在MATLAB中为学校的一个项目编写了一个代码(Pott的模型在3D中用于q = 3个状态),这需要很长时间来模拟,并用Python重写我的代码。代码略快但速度不够快,所以我想我可以使用Cython将我的Python文件转换为C。在您提出问题之前,我知道Matlab有一个内置的应用程序,用于对Matlab代码进行c转换,但是我没有让它工作。

我正在使用: - Windows 10 - Python 3.6 - Cython 0.25.2 - MinGW as gcc

根据Cython basic tutorial

我需要一个setup.py文件,所以我在与main.py文件相同的文件夹中创建了一个文件,它看起来像这样:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize("main.pyx")
)

从同一个教程中说它将.py文件保存到.pyx然后在Anaconda提示中写下这一行:

python setup.py build_ext --inplace

执行此操作后,会生成一个“main.c”文件,此时它会变得难看。我是语言c的真正新手,但我尝试在CMD中编译这个c文件以获得运行我的程序的可执行文件。

我首先尝试在CMD中输入:

gcc main.c

这给了我留言:

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

从这一部分开始,我还包括了python.h和其他必要文件的路径(我也尝试将路径包含到我的系统变量PATH中,希望每次尝试时都不必输入路径编译,没有成功...)

所以这就是我现在正在输入的内容:

C:\Users\burke\OneDrive\Spyder\F7035T>gcc -I C:\Users\burke\AppData\Local\Programs\Python\Python36-32\include main.c

从那里,CMD的输出中有数百行未定义的引用,所以我只包含最后一行,所以你得到它的图片:

C:\Users\burke\AppData\Local\Temp\cc5gCfUu.o:main.c:(.text+0x32469): undefined reference to `__imp__Py_NoneStruct'
C:\Users\burke\AppData\Local\Temp\cc5gCfUu.o:main.c:(.text+0x32489): undefined reference to `__imp_PyObject_IsTrue'
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.8.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\burke\AppData\Local\Temp\cc5gCfUu.o: bad reloc address 0x0 in section `.data'
collect2.exe: error: ld returned 1 exit status

此时,我不再知道该怎么做了。我试图谷歌它没有任何好结果。我希望有人可以帮我解决这个问题。对不起我的英语,我来自瑞典。

/约翰

0 个答案:

没有答案