Skip to content

[已解決] PyInstaller unable to find Qt5Core.dll

Last Updated on 2021-04-10 by Clay

在 Python 當中,我們若是寫好程式、想要發布檔案給電腦上沒有裝 Python 的朋友 (或是不想裝的朋友),我們可以調用 PyInstaller 這個套件來將 Python 程式打包成 exe 執行檔。

當然,這之中會發生各式各樣的問題!我今天在測試我的棋盤程式時就碰上了這樣的一個問題:

Traceback (most recent call last):
  File "xxxxxx\ui.py", line 4, in 
  File "c:\users\remib\.virtualenvs\xxxxxxx-w7udp1ct\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\PyQt5\__init__.py", line 41, in 
  File "site-packages\PyQt5\__init__.py", line 33, in find_qt
ImportError: unable to find Qt5Core.dll on PATH
[12876] Failed to execute script Board_GUI

Board_GUI 是我的程式,本來不管怎麼樣雙擊執行檔,都只有一閃而過的小黑框,連個報錯訊息都看不到!好險有學長提醒我可以使用 cmd 開啟檔案,這下,終於可以看到報錯訊息了,也建議大家在查看報錯訊息的時候盡量使用 cmd ,不要像我傻傻地截圖貼小畫家!

建議大家多多查詢 github 上面的討論、以及 stackoverflow!以下便是其中一項討論: https://github.com/pyinstaller/pyinstaller/issues/4293

然後我的報錯訊息就如同上方,大家若遇到相同的問題,也不妨參考一下!


解決方法

首先,如果是顯示找不到 PyQt5 的 sip,可以直接在程式碼中 import,這多半可以解決 sip 找不到的問題:

from PyQt5 import sip
像這樣!

當然,如果發生了找不到 PyQt5 core 的問題:

Traceback (most recent call last):
File "xxxxxx\ui.py", line 4, in
File "c:\users\remib\.virtualenvs\xxxxxxx-w7udp1ct\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\PyQt5\__init__.py", line 41, in
File "site-packages\PyQt5\__init__.py", line 33, in find_qt
ImportError: unable to find Qt5Core.dll on PATH
[12876] Failed to execute script Board_GUI

我建議,先到 site-packages/PyQt5/__init__.py 底下,運行看看是不是真的會報錯。我一開始看見預設都是雙斜線 // ,改為單斜線 / 後運行這個 __init__.py 就不會報錯了!(不過這個方法在我同學的電腦上似乎沒效,可能見仁見智?)

不過問題來了,雖然我直接執行這個檔案不會再報錯了,可是當我使用 PyInstaller 打包檔案時一樣會報錯,而且同樣是 “unable to find Qt5Core.dll on PATH” 這個錯誤。

最後,當我瀏覽網路上的眾多解決辦法之中,將 PyQt5/Qt/bin/ 加入系統環境變數 Path 底下的方法真的可以 work!推薦遇上這個報錯、又還沒試過這種辦法的人試試看。

再次強調,要加在 path 的眾多路徑底下哦!我一開始自己新增一個,結果一點用都沒有,是直接加在 path 底下就可以正常運行了!

最後再次推薦,如果想學習 PyQt5 的話,不妨參閱這裡: PyQt5 基本教學

Leave a Reply