Pyinstaller 打包exe教程及問題解決
安裝
pip insatll Pyinstaller
參數(shù)
pyinstaller -Fw main.py
參數(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有效) |
-s,–strip | 可執(zhí)行文件和共享庫(kù)將run through strip.注意Cygwin的strip往往使普通的win32 Dll無法使用. |
-X, –upx | 如果有UPX安裝(執(zhí)行Configure.py時(shí)檢測(cè)),會(huì)壓縮執(zhí)行文件(Windows系統(tǒng)中的DLL也會(huì))(參見note) |
-o DIR, –out=DIR | 指定spec文件的生成目錄,如果沒有指定,而且當(dāng)前目錄是PyInstaller的根目錄,會(huì)自動(dòng)創(chuàng)建一個(gè)用于輸出(spec和生成的可執(zhí)行文件)的目錄.如果沒有指定,而當(dāng)前目錄不是PyInstaller的根目錄,則會(huì)輸出到當(dāng)前的目錄下. |
-p DIR, –path=DIR | 設(shè)置導(dǎo)入路徑(和使用PYTHONPATH效果相似).可以用路徑分割符(Windows使用分號(hào),Linux使用冒號(hào))分割,指定多個(gè)目錄.也可以使用多個(gè)-p參數(shù)來設(shè)置多個(gè)導(dǎo)入路徑,讓pyinstaller自己去找程序需要的資源 |
–icon=<FILE.ICO> | 將file.ico添加為可執(zhí)行文件的資源(只對(duì)Windows系統(tǒng)有效),改變程序的圖標(biāo) pyinstaller -i ico路徑 xxxxx.py |
-v FILE, –version=FILE | 將verfile作為可執(zhí)行文件的版本資源(只對(duì)Windows系統(tǒng)有效) |
-n NAME, –name=NAME | 可選的項(xiàng)目(產(chǎn)生的spec的)名字.如果省略,第一個(gè)腳本的主文件名將作為spec的名字 |
注意事項(xiàng)
- 如果程序有采用外部文件,如配置文件, 需要將文件放在dist中
- -F 適合生成一個(gè)單一可執(zhí)行的文件
- -o 適用于多個(gè)文件引用情況,或者框架的結(jié)構(gòu)
打包進(jìn)程相關(guān)代碼失敗
例如編寫一些進(jìn)程相關(guān)的shell命令,打包失敗,一般是使用 -F 可以成功,但是執(zhí)行exe時(shí)有cmd彈窗,這非常不美觀, 如果使用-Fw c參數(shù)執(zhí)行exe 直接失敗。 這種情況有兩種解決方案。
方案一: 使用 pyinstaller -Dw file.py 生成的是一個(gè)目錄文件。 程序執(zhí)行成功,無黑名終端彈窗情況。
方案二: 起用 os.popen() 方法, 改用subprocess.Popen() 模塊
下面是我的測(cè)試,親測(cè)成功, 參數(shù)一定要配置好,否則程序執(zhí)行失敗!
import subprocess def checkprocess(): processnames = ['EXCEL.EXE'] for processname in processnames: p = subprocess.Popen('taskkill /F /IM %s' %processname,shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,stderr=subprocess.STDOUT) p.wait() checkprocess()
有空寫一個(gè) 關(guān)于subprocess的教程,詳細(xì)研究一下他的參數(shù)配置
工欲善其事,必先利其器!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)百度OCR圖片識(shí)別過程解析
這篇文章主要介紹了python實(shí)現(xiàn)百度OCR圖片識(shí)別過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01python刪除列表元素的三種方法(remove,pop,del)
這篇文章主要介紹了python刪除列表元素的三種方法(remove,pop,del),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python保存字典數(shù)據(jù)到csv文件的完整代碼
在實(shí)際數(shù)據(jù)分析過程中,我們分析用Python來處理數(shù)據(jù)(海量的數(shù)據(jù)),我們都是把這個(gè)數(shù)據(jù)轉(zhuǎn)換為Python的對(duì)象的,比如最為常見的字典,下面這篇文章主要給大家介紹了關(guān)于python保存字典數(shù)據(jù)到csv的相關(guān)資料,需要的朋友可以參考下2022-06-06移動(dòng)測(cè)試開發(fā)Mitmproxy用于測(cè)試抓包神器詳解
這篇文章主要為大家介紹了python移動(dòng)測(cè)試開發(fā)Mitmproxy抓包神器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06pytorch torch.expand和torch.repeat的區(qū)別詳解
這篇文章主要介紹了pytorch torch.expand和torch.repeat的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Python復(fù)數(shù)屬性和方法運(yùn)算操作示例
這篇文章主要介紹了Python復(fù)數(shù)屬性和方法運(yùn)算操作,結(jié)合實(shí)例形式分析了Python復(fù)數(shù)運(yùn)算相關(guān)操作技巧,代碼注釋備有詳盡說明,需要的朋友可以參考下2017-07-07