我的目标是创建一个Python库,我可以将其导入到我的任何项目中,我希望通过使用C语言(类似于NumPy的工作方式)使库更快。
但是,在遵循了许多不同的教程和视频之后,我总是会遇到相同的错误,并且无法完成教程中说我应该能够完成的过程。我一直在学习TutorialsPoint:extensions的这个教程
我试过搜索错误,尽管没有任何有价值的结果。
我正在我的PC上运行Windows 10 64位,安装了32位和64位的Python版本(我相信问题可能与不正确的Python版本有关)。我完全按照教程的要求做了,但是,在安装(构建?)时,我总是会导致相同的错误结果。它。
下面是我的C代码(名为hello.c),它是从教程中复制和粘贴的:
#include <Python.h>
static PyObject* helloworld(PyObject* self) {
return Py_BuildValue("s", "Hello, Python extensions!!");
}
static char helloworld_docs[] =
"helloworld( ): Any message you want to put here!!\n";
static PyMethodDef helloworld_funcs[] = {
{"helloworld", (PyCFunction)helloworld,
METH_NOARGS, helloworld_docs},
{NULL}
};
void inithelloworld(void) {
Py_InitModule3("helloworld", helloworld_funcs,
"Extension module example!");
}下面是我的python setup.py代码,它也是从教程中复制和粘贴的,尽管我已经将目录输入到hello.c文件中:
from distutils.core import setup, Extension
setup(name='helloworld', version='1.0', ext_modules=[Extension('helloworld', ['C:/Users/penci/OneDrive/Python3.7_64bit/Lib/site-packages/PythonLib/CCode/hello.c'])])一旦我这样做,并保存了他们所有(在同一个文件),本教程说,运行setup.py脚本后,“安装”。在本教程中,它说它应该创建所需的the和数据,并且应该能够将python包导入到我的代码中。然而,当我运行它时,我得到了两件事中的一件,这取决于我如何运行它。
(不好意思,代码太多了,我只是不确定哪一位才能帮助解决这个问题)
我已经尝试谷歌“退出状态1”,但没有出现有意义的结果。
发布于 2019-07-27 16:10:48
在你的1第一点,我没有足够的信息给你任何帮助。事实上,即使看到错误,1120也会间断性地显示与errlook.exe无关的消息。
在您的2和要点中,问题似乎是编译器没有找到Py_InitModule3函数的定义。这就得出结论,您没有链接定义该符号的正确python库。
实现正确链接而无需修改代码或setup.py脚本的一种简单方法是定义环境变量LIB,cl.exe调用的microsoft链接器将查看该变量以定位python37.lib库。
SET LIB=%LIB%;C:/Users/penci/OneDrive/Python3.7_64bit/libs然后,您必须在设置变量的控制台中运行setup.py脚本。这将解决链接问题,如果没有其他问题出现,这应该允许使用您的自定义模块。
https://stackoverflow.com/questions/57232897
复制相似问题