pyinstaller參數(shù)介紹以及總結(jié)詳解
最近利用tkinter+python+pyinstaller實(shí)現(xiàn)了小工具的項(xiàng)目,在此記錄下pyinstaller相關(guān)參數(shù)以及爬過(guò)的坑。
一、pyinstaller相關(guān)參數(shù)
-F, –onefile | 打包一個(gè)單個(gè)文件,如果你的代碼都寫在一個(gè).py文件的話,可以用這個(gè),如果是多個(gè).py文件就別用 |
-D, –onedir | 打包多個(gè)文件,在dist中生成很多依賴文件,適合以框架形式編寫工具代碼,我個(gè)人比較推薦這樣,代碼易于維護(hù) |
-K, –tk | 在部署時(shí)包含 TCL/TK |
-a, –ascii | 不包含編碼.在支持Unicode的python版本上默認(rèn)包含所有的編碼. |
-d, –debug | 產(chǎn)生debug版本的可執(zhí)行文件 |
-w,–windowed,–noconsole | 使用Windows子系統(tǒng)執(zhí)行.當(dāng)程序啟動(dòng)的時(shí)候不會(huì)打開命令行(只對(duì)Windows有效) |
-c,–nowindowed,–console |
使用控制臺(tái)子系統(tǒng)執(zhí)行(默認(rèn))(只對(duì)Windows有效) pyinstaller -c xxxx.py pyinstaller xxxx.py --console |
-s,–strip | 可執(zhí)行文件和共享庫(kù)將run through strip.注意Cygwin的strip往往使普通的win32 Dll無(wú)法使用. |
-X, –upx | 如果有UPX安裝(執(zhí)行Configure.py時(shí)檢測(cè)),會(huì)壓縮執(zhí)行文件(Windows系統(tǒng)中的DLL也會(huì))(參見note) |
-o DIR, –out=DIR | 指定spec文件的生成目錄,如果沒(méi)有指定,而且當(dāng)前目錄是PyInstaller的根目錄,會(huì)自動(dòng)創(chuàng)建一個(gè)用于輸出(spec和生成的可執(zhí)行文件)的目錄.如果沒(méi)有指定,而當(dāng)前目錄不是PyInstaller的根目錄,則會(huì)輸出到當(dāng)前的目錄下. |
-p DIR, –path=DIR | 設(shè)置導(dǎo)入路徑(和使用PYTHONPATH效果相似).可以用路徑分割符(Windows使用分號(hào),Linux使用冒號(hào))分割,指定多個(gè)目錄.也可以使用多個(gè)-p參數(shù)來(lái)設(shè)置多個(gè)導(dǎo)入路徑,讓pyinstaller自己去找程序需要的資源 |
–icon=<FILE.ICO> |
將file.ico添加為可執(zhí)行文件的資源(只對(duì)Windows系統(tǒng)有效),改變程序的圖標(biāo) pyinstaller -i ico路徑 xxxxx.py |
–icon=<FILE.EXE,N> | 將file.exe的第n個(gè)圖標(biāo)添加為可執(zhí)行文件的資源(只對(duì)Windows系統(tǒng)有效) |
-v FILE, –version=FILE | 將verfile作為可執(zhí)行文件的版本資源(只對(duì)Windows系統(tǒng)有效) |
-n NAME, –name=NAME | 可選的項(xiàng)目(產(chǎn)生的spec的)名字.如果省略,第一個(gè)腳本的主文件名將作為spec的名字 |
二、pyinstaller爬坑總結(jié)
第一次玩pyinstaller,遇到了不少坑,在這里總結(jié)一下,以免日后再次掉坑里。
1、先從這次寫的工具再說(shuō)吧,寫這個(gè)工具的初衷是由于自己手工造數(shù)據(jù)文件花了很長(zhǎng)時(shí)間,然后就想著寫個(gè)工具來(lái)解決這個(gè)問(wèn)題(也是想鍛煉下自己的代碼能力,哈哈哈),利用下班晚上以及周末寫了一周大概寫出來(lái)了。
這個(gè)工具是個(gè)掃碼支付文件生成工具,主要是解決手工造文件數(shù)據(jù),有兩個(gè)功能,一是基礎(chǔ)掃碼文件生成功能、二是大批量掃碼文件生成功能,同時(shí)加上了用戶auth控制。
在這里提醒大家,在代碼里面盡量不要用import,能from.....import....就盡量用這個(gè),因?yàn)槿绻莍mport的話,在打包的時(shí)候,會(huì)將整個(gè)包都打包到exe里面,沒(méi)有意義的增大了工具的大小!
大概框架如下:
2、Gui開發(fā)完畢后,開始研究pyinstaller,也翻閱了論壇關(guān)于pyinstaller的相關(guān)用法,這里總結(jié)下我的工具的打包步驟
2.1、先下載pyinstaller,我比較懶,就直接用pip install pyinstaller,等待自動(dòng)安裝
2.2、在代碼的路徑下進(jìn)行cmd,就直接跳轉(zhuǎn)到該路徑的cmd界面,切記路徑中不要有中文
2.3、先用后臺(tái)模式生成工具exe,命令為pyinstaller xxxx.py文件,主要目的是為了看報(bào)錯(cuò)信息,解決了報(bào)錯(cuò)后,再生成完整版的工具
tip:由于我的代碼是存在依賴的,即多文件的,而非所有代碼都在一個(gè)文件中的,所以我在這里沒(méi)有使用-F,剛開始玩的時(shí)候不知道,老是用了-F生成了單文件的,沒(méi)有生成依賴,老是不成功,各位朋友切記!
下圖為命令生成的日志,紅框部分則為exe工具生成的路徑,如果在日志中只有info信息的話,說(shuō)明打包過(guò)程沒(méi)有問(wèn)題
2.4、找到生成的exe文件,運(yùn)行exe(生成的exe文件都會(huì)在dist目錄下)
運(yùn)行時(shí),我遇到了以下的報(bào)錯(cuò)信息,是在dist找到相關(guān)的圖片資源,所以需要把所有關(guān)于工具所需的資源(包含圖片以及依賴的.py文件都放進(jìn)dist下的項(xiàng)目目錄中)
2.5、再次運(yùn)行exe,此時(shí)運(yùn)行成功,說(shuō)明工具打包成功
2.6、重新生成exe工具,去掉后臺(tái)模式以及更換掉圖標(biāo)
給大家推薦一個(gè)圖標(biāo)獲取地址,里面ico蠻多的:easyicon
下載了自己心儀的ico后,用-i+ico路徑來(lái)替換默認(rèn)ico,這次重新生成exe工具,命令為pyinstaller -i ico路徑 -w xxxx.py
再將需要的圖片資源和代碼文件放到dist下的項(xiàng)目文件夾中
2.7、運(yùn)行exe,能夠打開則表示pyinstaller打包exe成功
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 內(nèi)置函數(shù)之隨機(jī)函數(shù)詳情
這篇文章主要介紹了Python 內(nèi)置函數(shù)之隨機(jī)函數(shù),文章將圍繞Python 內(nèi)置函數(shù)、隨機(jī)函數(shù)的相關(guān)資料展開內(nèi)容,需要的朋友可以參考一下,希望對(duì)你有所幫助2021-11-11基于python(urlparse)模板的使用方法總結(jié)
下面小編就為大家?guī)?lái)一篇基于python(urlparse)模板的使用方法總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10Python基于DFA算法實(shí)現(xiàn)內(nèi)容敏感詞過(guò)濾
DFA?算法是通過(guò)提前構(gòu)造出一個(gè)?樹狀查找結(jié)構(gòu),之后根據(jù)輸入在該樹狀結(jié)構(gòu)中就可以進(jìn)行非常高效的查找。本文將利用改算法實(shí)現(xiàn)敏感詞過(guò)濾,需要的可以參考一下2022-04-04python3.7將代碼打包成exe程序并添加圖標(biāo)的方法
這篇文章主要介紹了python3.7將代碼打包成exe程序并添加圖標(biāo)的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-10-10