pyinstaller打包項目報錯總結


一、二維碼識別模塊 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

解決方法:

 

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安裝模塊出錯

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM