完美解決pyinstaller 打包報錯找不到依賴pypiwin32 或pywin32-ctypes的錯誤


報錯信息

最近閑來無事,用python的tkinter庫開發了一款帶日程提醒的萬年歷桌面程序。在程序開發結束開始打包時,卻發現一直報錯

PyInstaller cannot check for assembly dependencies.
Please install PyWin32 or pywin32-ctypes.
pip install pypiwin32

但是運行pip install pypiwin32時卻提示兩個庫都已經安裝過了

可是當再運行打包腳本時就是死活無法打包,就是提示缺少上面兩個依賴庫。

各種度娘發現都沒有遇到類似奇葩情況的。

於是決定自行解決,首先根據錯誤關鍵詞到pyinstaller的源碼中去檢索報錯位置。

最終發現是因為導包問題引起的,兩個依賴庫確實已經安裝只是導入方式不同導致報錯。

解決方案

在python安裝路徑下找到Lib/site-packages/Pyinstaller目錄下有個compat.py文件定位到212行

源碼如下:

if is_win:
    try:
        from win32ctypes.pywin32 import pywintypes  # noqa: F401
        from win32ctypes.pywin32 import win32api
    except ImportError:
        xxxx
        xxxx

做如下修改:將兩個from改為import

if is_win:
    try:
        # from win32ctypes.pywin32 import pywintypes  # noqa: F401
        # from win32ctypes.pywin32 import win32api
        import pywintypes
        import win32api
    except ImportError:
        xxxx
        xxxx

 

然后再重新運行打包腳本,打包成功


免責聲明!

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



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