cffi embedding_init_code 导入自定义 py 文件
cffi embedding_init_code import custom py files
我正在尝试将我的 python 代码转换为 dll,在 ffi.embedding_init_code
下面的代码中,我可以导入我用 pip 或 conda 安装的软件包,如 cv2、numpy、pil 等,但是我创建了 python 文件 my_tools.py 这在访问 dll 时出错。 "ModuleNotfoundError: 没有名为 'my_tools' 的模块"
import re
import cffi
ffi = cffi.FFI()
with open('plugin.h') as f:
include = f.read()
ffi.embedding_api(include)
ffi.set_source("my_plugin",
re.sub(r'^extern(?=\s)', 'CFFI_DLLEXPORT', include, flags=re.M))
ffi.embedding_init_code("""
from my_plugin import ffi, lib
import keras_ocr
import my_tools # as m_tools
import logging
import sys
import cv2
import numpy as np
from PIL import Image
import io
import base64
@ffi.def_extern()
def hello(out_result):
out_result=ffi.string(out_result)
print("hello python="+str(out_result))
return 0
""")
ffi.cdef("""
char *strdup(const char *);
""")
ffi.compile(target="plugin-1.5.*", verbose=True)
下面是我的plugin.h
extern int hello(char* out_result);
如何在这里导入我自己创建的文件。
没有 one-size-fits-all 答案,但快速入门的方法是将其添加为第一行
embedding_init_code
:
import sys; sys.path.insert(0, "/path/containing/the/python/files")
我正在尝试将我的 python 代码转换为 dll,在 ffi.embedding_init_code
下面的代码中,我可以导入我用 pip 或 conda 安装的软件包,如 cv2、numpy、pil 等,但是我创建了 python 文件 my_tools.py 这在访问 dll 时出错。 "ModuleNotfoundError: 没有名为 'my_tools' 的模块"
import re
import cffi
ffi = cffi.FFI()
with open('plugin.h') as f:
include = f.read()
ffi.embedding_api(include)
ffi.set_source("my_plugin",
re.sub(r'^extern(?=\s)', 'CFFI_DLLEXPORT', include, flags=re.M))
ffi.embedding_init_code("""
from my_plugin import ffi, lib
import keras_ocr
import my_tools # as m_tools
import logging
import sys
import cv2
import numpy as np
from PIL import Image
import io
import base64
@ffi.def_extern()
def hello(out_result):
out_result=ffi.string(out_result)
print("hello python="+str(out_result))
return 0
""")
ffi.cdef("""
char *strdup(const char *);
""")
ffi.compile(target="plugin-1.5.*", verbose=True)
下面是我的plugin.h
extern int hello(char* out_result);
如何在这里导入我自己创建的文件。
没有 one-size-fits-all 答案,但快速入门的方法是将其添加为第一行
embedding_init_code
:
import sys; sys.path.insert(0, "/path/containing/the/python/files")