1. 程式人生 > >python專案打包(自定義dll) anaconda3+pyinstaller

python專案打包(自定義dll) anaconda3+pyinstaller

        目前手上有一個python+pyqt的專案需要打包,所以查了一下打包的方法。下面介紹一下具體步驟:

python打包有很多方法,py2exe,pyinstaller等等(其實我也就知道這兩種)。py2exe要自己寫setup.py,

太麻煩。用了pyinstaller。

        1.用命令列安裝pyinstaller:(要在工程所在的環境裡安裝)

pip install pyinstaller

        如何進入自己工程所在的環境,我使用anaconda3的tensorflow-cpu。而F:\python\label_tensorflow_cpu

就是我的工程所在目錄。接著輸入pip install pyinstaller,我安裝過了,就不安裝了。

pyinstaller -D -i ./icons/AutoLabel1.ico labelImg.py

         這時成功的話會顯示successfully。


         

         3.工程的根目錄(F:\python\label_tensorflow_cpu)下面會多出兩個資料夾:build & dist。

         4.點開dist找到.exe,雙擊執行會發現報錯或者閃退。這是缺少執行時所需的包。

         5.找到python的包,全部複製到根目錄底下(F:\python\label_tensorflow_cpu\dist\labelImg

)。

我的python包是在anaconda3下自己建立的tensorflow-cpu環境,所以去目錄(D:\Anaconda3\envs\

tensorflow-cpu\Lib\site-packages\)下找。

         6.然後雙擊dist中的exe(F:\python\label_tensorflow_cpu\dist\labelImg\labelImg.exe),即可執行。

教程)。注意一點,pywin32有32位和64位之分,這個對應的是python的版本。

         對於自定義dll的打包,有很多坑,下面一一介紹:

坑一:自定義的dll,匯入時用ctypes.windll.LoadLibrary(trackDllPath),這裡的是我dll所在的位置。這裡原本

           放的是相對路徑,結果自己的電腦執行沒有問題,在別人電腦上如何都不能執行。最後我將其放在根

           目錄底下,即可執行。

坑二:如果你的dll生成txt文字等資料。這時根據你cmd的路徑不同,它生成的位置也不同。如下面兩張圖,

           生成的txt就在不同的路徑底下,就是由於在不同路徑的cmd下開啟。這個坑很隱蔽,我就是之前已經

           打包好可以使用了,突然發現找不到dll生成的txt了。

坑三:打包好的軟體在其他電腦上執行,需要安裝vs2015的庫。這個坑了我很長時間。

         最後,最好把exe拉進cmd中執行,這樣程式出錯,可以在cmd中看到,不會閃退。還有其他新的錯誤

可以根據報錯修改。