1. 程式人生 > >pyinstaller打包OpenCV錯誤解決

pyinstaller打包OpenCV錯誤解決

pyinstaller打包錯誤

        1、pyinstaller的安裝方法:pip install PyInstaller

        一般的pyinstaller打包功能可參考:

        https://blog.csdn.net/zx520113/article/details/80926011

        2、最開始安裝的是Annoconda,安裝好後打包報錯:

        Cannot find exiting PyQt5 plugin directores

        因為pyinstaller是python的,在Annoconda下執行會出問題,所以果斷解除安裝Annoconda,重新安裝去python官網下載安裝https://www.python.org/downloads/。

        3、在Annoconda下打包其他的還遇到一個問題,報錯:

        RecursionError:maxnum recursion depth exceeded

        在pyi-makespec main.py生成的main.spec檔案中第二行新增

        import sys

        sys.setrecursionlimit(1000000)

        就可解決這個問題,但是打包依然有問題。

        4、在重新下載安裝python3.6.6的時候,

        pip install opencv-python

        pip install opencv-contrib-python

        安裝後,import cv2報錯:

        ImportError: DLL load fialed找不到指定的模組

        這個問題在打包成功後,拷貝在其他電腦上執行也出現了這個問題,後來發現是因為在Windows\system32下缺少.dll檔案

因為OpenCV的cv2.pyd檔案中缺少東西,可以在這裡下載:

          https://download.csdn.net/download/zx520113/10679870,資源中包含了一個打包示例檔案,以及問題的解決檔案。

        此連結中的缺失DLL檢視,執行.exe檔案,把cv2.pyd丟進去就可以看見缺失的dll檔案,缺失的dll檔案也可以在網上查詢。將dll檔案新增進Windows\system32就可以打包後程序執行出錯問題。

        5、pyinstaller打包問題

        python pyinstaller打包,打包只有一個.py檔案倒是沒有問題,挺簡單的,參考以下連結就可解決問題。

        https://blog.csdn.net/zx520113/article/details/80926011

        是我在打包多個檔案的時候出現了問題,雖然提示打包成功,但是打包出來的檔案並不能執行。查看了以下以及百度上的很多關於打包的問題的連線還是沒有解決問題, 但是也可以從中學習借鑑打包方法,希望對大家有用。

        https://www.cnblogs.com/jackzz/p/9431923.html

        https://blog.csdn.net/djshichaoren/article/details/79801531

        https://blog.csdn.net/qq744746842/article/details/49404027

        後在pyinstaller的英文文件,通過pyinstaller main.spec文件進行打包,首先嚐試簡單的單個檔案打包,打包成功,然後開始匯入檔案路徑,輸出路徑是固定了的,輸出路徑如何變成相對路徑倒是還沒有解決,但是可以通過在介面上輸入輸出路徑更改程式的輸出路徑。檔案資料輸入的相對路徑已經解決,在打包的時候如果涉及到多個.py檔案最好都放在更目錄,放在根目錄下的檔案目錄也行,但是要保證其執行沒有問題。

        py檔案在根目錄下的檔案目錄打包:

        py檔案都在根目錄下的檔案打包

        在打包的時候重要的設定就是:datas=[('D:\\zx\\Data\\','Data'),('D:\\zx\\Img\\','Img')]的設定,當然網上也有其他一些data是的匯入方法,但是最後我通過這種方法匯入檔案目錄資料並打包成功。

     通過在datas中定義('D:\\zx\\Data\\','Data'),就可以在程式中匯入Data下的檔案,程式中的匯入寫法,相對路徑通過定義:file_name=".\\Data\\data.txt",img=".\\Img\\bak\\cut1.jpg"就可以匯入Data下的所有檔案了。

      總結:首先pyi-makespec main.py,然後再main.spec中配置路徑datas路勁,然後cmd進入工程下路徑pyinstaller main.spec,完成。其他的,如果要加圖片或者一些其他的,也可以直接在main.spec中配置,或者在pyi-makespec main.py的時候就新增。簡單的單個資料夾打包可以直接pyinstaller -F main.py打包,通過pyinstaller新增制定路徑太繁瑣的話,可以放在.txt文件中,然後另存為.bat文件,直接點選就可執行打包,直接pyinstaller打包試了一下,可能因為路徑配置的不對老出錯,具體的可以參考上面給出的連結。