Ubuntu 18.04-运行时错误-将 Python 嵌入到 C 中

Ubuntu 18.04-运行时错误-将 Python 嵌入到 C 中

我正在做一个与对象检测和 OCR 相关的项目。我使用 Ubuntu 18.04 和 Python 2.7,yolov3 用于对象检测,tesseract 5.0.0-alpha-692-g62ea 用于 OCR。我必须将用于 OCR 的 Python 代码嵌入到用于对象检测的 C 代码中。我编写了这个 C 代码并通过“ sudo gcc code.c -lpython2.7 ”在终端上进行编译

#include < /usr/include/python2.7/Python.h >

int main() {
Py_Initialize();
PyRun_SimpleString("import sys; sys.path.append('.')");
PyRun_SimpleString("import ocr3;");
PyRun_SimpleString("print ocr3.myabs(2.0)");
Py_Finalize();

return 0;
}

但运行 a.out 时出现错误:

ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
File "", line 1, in
File "./ocr3.py", line 1, in
import cv2
File "/home/asus/.local/lib/python2.7/site-packages/cv2/init.py", line 3, in
from .cv2 import *
ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
File "", line 1, in
NameError: name 'ocr3' is not defined

因此,我尝试了另一个 C 代码:

#include < stdio.h >
#include < ncurses.h >
#include < /usr/local/include/python2.7/Python.h >

int main()
{
char filename[] = "ocr3.py";
FILE* fp;

Py_Initialize();

fp = _Py_fopen(filename, "r");
PyRun_SimpleFile(fp, filename);

Py_Finalize();
return 0;
}

但是在运行 a.out 时我又遇到了一个问题:

" code.c:(.text+0x3e): undefined reference to `_Py_fopen' "

不幸的是,我找不到任何解决方案。有人能帮忙解决这些问题吗?

相关内容