Получил эту ошибку в моей программе pyzbar сканера штрих-кодов после преобразования в exe с помощью pyinstaller

#python #opencv #kivy #barcode-scanner #kivymd

#python #opencv #kivy #сканер штрих-кода #kivymd

Вопрос:

Я написал небольшое приложение для Windows, которое использует модуль pyzbar (штрих-коды), приложение просто считывает штрих-коды и сохраняет их. На компьютере все работает нормально, но после компиляции при сборке, после запуска сборка не запускается. Я проследил логику, и ошибка связана с модулем, предположительно его там нет, он не загружается, хотя во время компиляции ошибок нет Что делать или куда вставить этот модуль, я указал модуль pyzbar в файле спецификации. Странно, что это не запускается. Несмотря на то, что при компиляции ошибок нет!

Версии программного обеспечения

  1. Python: 3.9.2
  2. ОС: Windows 10 Home 64-разрядная
  3. Kivy: 2.0.0

Метод установки Kivy:

  1. pip install kivy
  2. pip install pyzbar
  3. pip install opencv-python

Я получил ошибку типа

 File "pyzbarzbar_library.py", line 51, in <listcomp>
File "ctypes__init__.py", line 452, in LoadLibrary
File "PyInstallerloaderpyimod04_ctypes.py", line 56, in _init_
pyimod04_ctypes.PyInstallerImportError: Failed to load dynlib/dll 
'C:\Users\hp\AppData\Local\Temp\_MEI78802\pyzbar\libiconv.dll'. 
Most probably this dynlib/dll was not found when the application was 
frozen.
[19732] Failed to execute script 'main' due to unhandled exception!
 

main.py

 import sys
import os
import cv2
from pyzbar.pyzbar import decode
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout

Builder.load_file("Test.kv")

# Make one method to decode the barcode
class BarcodeScreen(GridLayout):
    def BarcodeReader(self):
        # read the image in numpy array using cv2
        img = cv2.imread('image.jpg')

        # Decode the barcode image
        detectedBarcodes = decode(img)

        # If not detected then print the message
        if not detectedBarcodes:
            print("Barcode Not Detected or your barcode is blank/corrupted!")
        else:
            # Traverse through all the detected barcodes in image
            for barcode in detectedBarcodes:

                # Locate the barcode position in image
                (x, y, w, h) = barcode.rect

                # Put the rectangle in image using
                # cv2 to heighlight the barcode
                cv2.rectangle(img, (x - 10, y - 10), (x   w   10, y   h   10), (255, 0, 0), 2)

                if barcode.data != "":
                    # Print the barcode data
                    print(barcode.data)
                    print(barcode.type)
                    
                    self.ids.my_label.text = "Barcode Data:  " str(barcode.data)
                    self.ids.my_label2.text = "Barcode Type: " str(barcode.type)



class Test(App):
    def build(self):
        return BarcodeScreen()


if __name__ == "__main__":
    Test().run()
 

Test.kv

 <BarcodeScreen>
id: settings
name: 'settings'
BoxLayout:
    orientation: 'vertical'
    size: root.width, root.height

    Button:
        text: 'Capture code'
        size_hint_y: None
        height: '80dp'
        on_press:
            root.BarcodeReader()
    Label:
        id: my_label
        size: root.width, root.height
        font_size: 20
    Label:
        id: my_label2
        size: (0.5, 0.5)
        font_size: 20
 

** Ссылка на исходный код **

https://github.com/dreamorg89/Barcode-Image-Decode-Python-Kivy.git

Комментарии:

1. Разве это не связано с этой проблемой? Не удалось загрузить dynlib / dll libiconv.dll №27