如何解决cffi embedding_init_code导入自定义py文件
我正在尝试将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)
下面是我的插件。h
extern int hello(char* out_result);
解决方法
没有一个适合所有人的答案,但是一种快速的入门方法是将其添加为第一行
embedding_init_code
:
import sys; sys.path.insert(0,"/path/containing/the/python/files")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。