最近利用tkinter+python+pyinstaller實現了小工具的專案,在此記錄下pyinstaller相關引數以及爬過的坑。
一、pyinstaller相關引數
-f, –onefile 打包乙個單個檔案,如果你的**都寫在乙個.py檔案的話,可以用這個,如果是多個.py檔案就別用
-d, –onedir 打包多個檔案,在dist中生成很多依賴檔案,適合以框架形式編寫工具**,我個人比較推薦這樣,**易於維護
-k, –tk 在部署時包含 tcl/tk
-a, –ascii 不包含編碼.在支援unicode的python版本上預設包含所有的編碼.
-d, –debug 產生debug版本的可執行檔案
-w,–windowed,–noconsole 使用windows子系統執行.當程式啟動的時候不會開啟命令列(只對windows有效)
-c,–nowindowed,–console
使用控制台子系統執行(預設)(只對windows有效)
pyinstaller -c ***x.py
pyinstaller ***x.py --console
-s,–strip 可執行檔案和共享庫將run through strip.注意cygwin的strip往往使普通的win32 dll無法使用.
-x, –upx 如果有upx安裝(執行configure.py時檢測),會壓縮執行檔案(windows系統中的dll也會)(參見note)
-o dir, –out=dir 指定spec檔案的生成目錄,如果沒有指定,而且當前目錄是pyinstaller的根目錄,會自動建立乙個用於輸出(spec和生成的可執行檔案)的目錄.如果沒有指定,而當前目錄不是pyinstaller的根目錄,則會輸出到當前的目錄下.
-p dir, –path=dir 設定匯入路徑(和使用pythonpath效果相似).可以用路徑分割符(windows使用分號,linux使用冒號)分割,指定多個目錄.也可以使用多個-p引數來設定多個匯入路徑,讓pyinstaller自己去找程式需要的資源
–icon=
將file.ico新增為可執行檔案的資源(只對windows系統有效),改變程式的圖示 pyinstaller -i ico路徑 ***xx.py
–icon=將file.exe的第n個圖示新增為可執行檔案的資源(只對windows系統有效)
-v file, –version=file 將verfile作為可執行檔案的版本資源(只對windows系統有效)
-n name, –name=name 可選的專案(產生的spec的)名字.如果省略,第乙個指令碼的主檔名將作為spec的名字
二、pyinstaller爬坑總結
第一次玩pyinstaller,遇到了不少坑,在這裡總結一下,以免日後再次掉坑里。
1、先從這次寫的工具再說吧,寫這個工具的初衷是由於自己手工造資料檔案花了很長時間,然後就想著寫個工具來解決這個問題(也是想鍛鍊下自己的**能力,哈哈哈),利用下班晚上以及週末寫了一周大概寫出來了。
這個工具是個掃碼支付檔案生成工具,主要是解決手工造檔案資料,有兩個功能,一是基礎掃碼檔案生成功能、二是大批量掃碼檔案生成功能,同時加上了使用者auth控制。
在這裡提醒大家,在**裡面盡量不要用import,能from.....import....就盡量用這個,因為如果是import的話,在打包的時候,會將整個包都打包到exe裡面,沒有意義的增大了工具的大小!
大概框架如下:
2、gui開發完畢後,開始研究pyinstaller,也翻閱了論壇關於pyinstaller的相關用法,這裡總結下我的工具的打包步驟
2.2、在**的路徑下進行cmd,就直接跳轉到該路徑的cmd介面,切記路徑中不要有中文
2.3、先用後台模式生成工具exe,命令為pyinstaller ***x.py檔案,主要目的是為了看報錯資訊,解決了報錯後,再生成完整版的工具
tip:由於我的**是存在依賴的,即多檔案的,而非所有**都在乙個檔案中的,所以我在這裡沒有使用-f,剛開始玩的時候不知道,老是用了-f生成了單檔案的,沒有生成依賴,老是不成功,各位朋友切記!
下圖為命令生成的日誌,紅框部分則為exe工具生成的路徑,如果在日誌中只有info資訊的話,說明打包過程沒有問題
2.4、找到生成的exe檔案,執行exe(生成的exe檔案都會在dist目錄下)
2.5、再次執行exe,此時執行成功,說明工具打包成功
2.6、重新生成exe工具,去掉後台模式以及更換掉圖示
再將需要的資源和**檔案放到dist下的專案資料夾中
2.7、執行exe,能夠開啟則表示pyinstaller打包exe成功
pyinstaller 打包總結
pyinstaller 打包過程總結 安裝 pyinstaller 打包工具 pip3 install pyinstallerpyinstaller 打包命令不熟悉的小夥伴可點選這裡檢視喲 備註 以下涉及到的檔案名字main.py,請替換成自己的檔名 執行打包命令生成單獨的 exe 程式 pyins...
pyinstaller 打包步驟總結
1.安裝對應版本的pyinstaller 2.在打包之前,將需要import的庫從site package中copy出來放在要打包的同個檔案目錄下,有些庫有依賴庫,需要將依賴庫也一同copy到同個目錄下 3.開啟cmd,進入要打包的檔案目錄中執行 pyinstaller f myfile.py 4....
pyinstaller遇到的問題總結
解決步驟 1 pyinstaller f py 這一步肯定會報上述錯誤導致失敗,但是會產生乙個 spec檔案 2 在 spec檔案中增加兩行 新增在原檔案第二行 import sys sys.setrecursionlimit 5000 3 pyinstaller spec 打包成功。解決方法 在你...