一、二維碼識別模塊 pyzbar報錯
1.1 模塊安裝報錯
參考:https://blog.csdn.net/pythonlaodi/article/details/112783132
項目識別二維碼需要安裝pyzbar,安裝完,啟動項目出現如下報錯!FileNotFoundError: Could not find module '你的路徑\Python\Python38\site-packages\pyzbar\libzbar-64.dll' (or one of its dependencies). Try using the full path with constructor syntax
解決方法:
-
沒事,這個坑我已經踩過。這個報錯的原因是沒有安裝
Visual C++
的依賴庫 -
下載地址:Visual C++ Redistributable Packages for Visual Studio 2013
-
進入之后,拉到下面可以看到下載的按鈕,下載完之后安裝即可!:
1.2 pyinstaller打包后 Failed to load dynlib/dll 'libiconv.dll'
項目在沒打包前運行沒問題,識別正常,打包后就有以下報錯,這是因為該模塊的dll加載失敗造成的
Traceback (most recent call last): File "pyzbar\zbar_library.py", line 58, in load File "pyzbar\zbar_library.py", line 50, in load_objects File "pyzbar\zbar_library.py", line 51, in <listcomp> File "ctypes\__init__.py", line 447, in LoadLibrary File "PyInstaller\loader\pyimod04_ctypes.py", line 56, in __init__ pyimod04_ctypes.PyInstallerImportError: Failed to load dynlib/dll 'libiconv.dll'. Most probably this dynlib/dll was not found when the application was frozen. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "PyInstaller\loader\pyimod04_ctypes.py", line 54, in __init__ File "ctypes\__init__.py", line 369, in __init__ FileNotFoundError: Could not find module 'D:\代碼\weebot\main\pyzbar\libiconv.dll'. Try using the full path with constructor syntax. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "main.py", line 9, in <module> File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module File "bot_core\wechat.py", line 15, in <module> File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module File "pyzbar\pyzbar.py", line 7, in <module> File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module File "pyzbar\wrapper.py", line 139, in <module> File "pyzbar\wrapper.py", line 136, in zbar_function File "pyzbar\wrapper.py", line 115, in load_libzbar File "pyzbar\zbar_library.py", line 60, in load File "pyzbar\zbar_library.py", line 50, in load_objects File "pyzbar\zbar_library.py", line 51, in <listcomp> File "ctypes\__init__.py", line 447, in LoadLibrary File "PyInstaller\loader\pyimod04_ctypes.py", line 56, in __init__ pyimod04_ctypes.PyInstallerImportError: Failed to load dynlib/dll 'D:\\代碼\\weebot\\main\\pyzbar\\libiconv.dll'. Most probably this dynlib/dll was not found when the application was frozen. [3632] Failed to execute script 'main' due to unhandled exception!
解決方法:
第一種方法:在自己的虛擬環境中找到該模塊的dll,手動復制粘貼到打包后目錄即可:
第二種方法:修改spec文件的時候設置好導入位置,打包時會自動識別
二、某些模塊無法用pipenv安裝,或者安裝后可以使用,打包后出錯
詳見以下文章第五步:
pyinstaller打包完整python項目 pyinstaller如何給打包后的文件添加文件版本信息
三、打包后無法正常運行,閃退
我遇到這個情況,不打包運行的好好的,打包后一運行就閃退,
不要用雙擊模式運行,可以用cmd或者powershell運行exe,這樣閃退后打印出報錯信息
報錯缺少模塊,這種情況很可能是沒有在虛擬環境內部進行打包,詳見以下文章描述,嚴格執行打包流程再來一次可能就好了
pyinstaller打包完整python項目 pyinstaller如何給打包后的文件添加文件版本信息
四 pipenv graph 執行報錯 IndexError: list index out of range pipenv安裝模塊出錯