Python 升級(jí)之路( Lv27 ) 打包工具 pyinstaller
今天我們將學(xué)習(xí)pyinstaller, 利用其將Python 程序打包成Windows可執(zhí)行的exe程序。
今日冒險(xiǎn)片段上:
在結(jié)束淺析之地的冒險(xiǎn)之后, 他們繼續(xù)走, 便走到一片巨大山脈. 而出口只有眼前的這個(gè)洞穴. 而據(jù)米斯特對(duì)這個(gè)地方的了解, 這個(gè)區(qū)域叫蜘蛛洞穴. 是通往首都的畢竟之地. 但是在這個(gè)洞穴里面棲息這很多蜘蛛, 有些甚至攜帶劇毒. 聽(tīng)人勸, 吃飽飯. 因此了不起非常小心, 開(kāi)始小心翼翼的通過(guò)洞穴.
什么是 pyinstaller
pyinstaller 是Python 提供的一個(gè)第三方拓展庫(kù)模塊. 它的功能是將我們的 Python 程序打包成可執(zhí)行的 .exe 程序。
安裝
方式一:pycharm安裝
- 安裝 pyinstaller 模塊 在 pycharm 中操作:file-->setting-->Project:xxx -->Project interpretor,再點(diǎn)擊(加號(hào))
- 在新彈窗中輸入要下載的第三方模塊, 然后點(diǎn)擊該模塊, 最后點(diǎn)擊左下角安裝即可
方式二:命令行安裝
命令行安裝: 在命令行輸入一下命令進(jìn)行安裝
pip install pyinstaller
使用
最基本的使用方式:
pyinstaller xxx.py
注意: 后面可以跟多個(gè)python文件, 但注意用空格隔開(kāi)。
參數(shù)介紹
pyinstall 打包時(shí), 可以跟各種參數(shù), 這些參數(shù)用來(lái)拓展打包時(shí)需要的定制需求。
常用參數(shù)如下表所示:
參數(shù)名 | 作用 |
-F / --onefile | 打包一個(gè)成單個(gè)文件, 多個(gè).py文件或者需要打包其他資源(圖片,音頻) 不要使用 |
-D / --onedir | 打包多個(gè)文件,在dist中生成很多依賴文件,適合以框架形式編寫(xiě)工具代碼 |
-w / –windowed/–noconsole | 程序啟動(dòng)的時(shí)候不會(huì)打開(kāi)命令行 (只對(duì)Windows有效, 編寫(xiě)GUI程序時(shí)使用此參數(shù)有用) |
-i /–icon | 指定打包之后的.exe文件的圖標(biāo) |
-n / –name=NAME | 指定打包之后的.exe 文件的名稱 |
-v FILE /–version=FILE | 指定打包之后的.exe 文件的版本信息. FILE: 版本信息描述文件編寫(xiě)請(qǐng)點(diǎn)擊查看 |
-a/--ascii | 不包含 Unicode 字符集支持 |
-d/--debug | 產(chǎn)生 debug 版本的可執(zhí)行文件 |
-c /--console/ --nowindowed | 使用命令行執(zhí)行(此參數(shù)默認(rèn)開(kāi)啟) |
-v / --version | 查看當(dāng)前pyinstaller版本 |
--add-data <源目錄;目標(biāo)目錄or源目錄:目標(biāo)目錄> | 將源目錄文件額外打包到.exe程序所在目標(biāo)目錄. ; Windows下使用, :Linux下使用 |
-h/--help | 查看該命令幫助信息 |
利用自帶幫助文檔進(jìn)行學(xué)習(xí)
下載pyinstaller 之后, 可以輸入pyinstaller -h 或者 pyinstaller --help , 來(lái)查看其自帶的幫助文檔。
打包
(1) 方式一:利用命令行打包
利用上面所學(xué)到的參數(shù),對(duì)文件進(jìn)行打包。
- 將文件打包成 xxx.exe
pyinstaller -F xxx.py
- 將文件打包成 xxx.exe, 并且運(yùn)行時(shí)不打開(kāi)命令行(tkinter程序打包時(shí)使用)
pyinstaller -F -w xxx.py
- 打包上一章坦克大戰(zhàn)源碼 將源碼打包成 坦克大戰(zhàn)v1.0.1.exe 并且運(yùn)行時(shí)不打開(kāi)命令行, 將.\img\p1tankU.gif設(shè)置為程序圖標(biāo), 并將當(dāng)前.\img\目錄下文件打包到 .exe程序運(yùn)行所在目錄, 且命名為.\img\
pyinstaller -w -D -i .\img\p1tankU.gif -n "坦克大戰(zhàn)v1.0.1" tank26.py --add-data ".\img\;.\img\"
(2) 方式二:利用圖形界面打包
auto-py-to-exe 用于將Python程序打包成可執(zhí)行文件的圖形化工具 該工具的作用是將我們的在圖形化界面點(diǎn)擊的選項(xiàng)轉(zhuǎn)換成方式一中的命令。
- 安裝方式 :pip install auto-py-to-exe
- 啟動(dòng)方式: 命令行輸入 auto-py-to-exe
- 啟動(dòng)后, 我們只需要根據(jù)情況去選擇, 然后點(diǎn)擊底部藍(lán)色按鈕即可
今日冒險(xiǎn)片段下:
洞穴里面的冒險(xiǎn)可謂是百密一疏, 就在即將通過(guò)時(shí). 由于了不起的放松導(dǎo)致一塊巖石掉落到地上, 發(fā)出了刺耳的聲音. 頓時(shí)各種蜘蛛蜂擁而來(lái), 好在利用蜘蛛懼火的特性, 二人將其驅(qū)散. 但是隨著而來(lái)的巨大虛影卻讓他們緊繃的精神中多了一絲凝重. 來(lái)著正式此地領(lǐng)主, 一只名為艾克洛索的巨大蜘蛛. 雖然它的身軀要比普通的蜘蛛打上幾十倍, 但是敏捷倒是絲毫不比他們差. 在較為狹小的空間內(nèi)四處跳動(dòng), 借以尋找到冒險(xiǎn)家的破綻進(jìn)而攻擊. 了不起對(duì)這個(gè)仿佛擁有智慧的怪物不敢大意. 佯裝要逃跑, 吸引其主動(dòng)攻擊, 然后米斯特借機(jī)偷襲. 縱然其能吐出強(qiáng)力蛛絲, 但在二人的合力圍攻下, 艾克洛索逐漸敗下陣來(lái). 最終被二人擊敗, 與此同時(shí)一道金光閃過(guò), 了不起成功晉升到lv28.