मैं अपने अजगर कोड को dll में बदलने की कोशिश कर रहा हूं, नीचे दिए गए कोड में ffi.embedding_init_code मैं उन पैकेजों को आयात कर सकता हूं जिन्हें मैंने pip या conda जैसे cv2, numpy, pil आदि के साथ स्थापित किया है, लेकिन मैंने अजगर फ़ाइल 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)

नीचे मेरा प्लगइन है

extern int hello(char* out_result);

मेरी खुद की बनाई गई फ़ाइल को यहाँ कैसे आयात कर सकते हैं।

0
Rawat 15 सितंबर 2020, 11:03

1 उत्तर

सबसे बढ़िया उत्तर

कोई एक-आकार-फिट-सभी उत्तर नहीं है, लेकिन आरंभ करने का एक त्वरित तरीका इसे पहली पंक्ति के रूप में जोड़ना है embedding_init_code:

import sys; sys.path.insert(0, "/path/containing/the/python/files")
1
Armin Rigo 15 सितंबर 2020, 12:02