pyinstaller將python程序打包為可執(zhí)行文件
前言
對(duì)于專業(yè)的python程序員來說,python打包工具或許用得并不多。但是對(duì)于非專業(yè)人士來說,你給他寫個(gè)python項(xiàng)目,要讓他安裝python、安裝依賴等等,估計(jì)人都會(huì)抓狂?;蛘哒f,如果你不想暴露自己的項(xiàng)目代碼,python打包工具就派上用場(chǎng)了,市面上有多種打包工具,這里就講講最常用的pyinstaller的使用方法吧。
pyinstaller簡介
pyinstaller是一個(gè)python打包工具,它將python程序及所需依賴都打包成一個(gè)可執(zhí)行文件。
說詳細(xì)點(diǎn)就是:輸入指定的python腳本,pyinstaller首先會(huì)分析腳本所依賴的其他腳本,查找后將所有腳本收集起來(包括python解釋器),最后將這些文件放到一個(gè)目錄下,或者是打包到一個(gè)可執(zhí)行文件中。打包后我們只需要執(zhí)行可執(zhí)行文件即可,無需再安裝繁雜的python環(huán)境。
需要注意的是,pyinstaller不是交叉編譯器。就是說如果你要將python程序打包成一個(gè)能在windows運(yùn)行的文件,那么你只能在windows上使用pyinstaller來完成打包過程,而不能在其他系統(tǒng)如linux、macos上打包。
pyinstaller下載
首先,因pyinstaller支持python的版本需>=3.7,所以我們要確保在python3.7或更新的版本上使用。
安裝:
pip install pyinstaller
下載完成后,運(yùn)行pyinstaller -h
,顯示如下則安裝成功。
pyinstaller使用
準(zhǔn)備好程序代碼
這里以一個(gè)簡單的python程序?yàn)槔?,新建一個(gè)a.py文件,內(nèi)容如下:
import fire def print_msg(msg): print("print here:", msg) if __name__ == "__main__": fire.Fire(print_msg)
打包程序
常用到的命令:
標(biāo)題 | 參數(shù) | 說明 |
---|---|---|
-F | pyinstaller -F a.py | 在dist目錄下生成一個(gè)可執(zhí)行文件 |
-D | pyinstaller -D a.py | 在dist目錄中,除了可執(zhí)行文件,還會(huì)生成依賴文件 |
這里使用第一種方式來生成文件,執(zhí)行pyinstaller -F a.py
執(zhí)行后,我們可在當(dāng)前目錄下看到多了幾個(gè)文件/目錄,分別是a.spec、build目錄、dist目錄。
- .spec文件:記錄的是打包參數(shù)等信息,也可以預(yù)先準(zhǔn)備好spec文件直接打包。
- build目錄:記錄的是打包所產(chǎn)生的文件,我們可忽略。
- dist目錄:放的是可執(zhí)行文件及依賴,例子中dist目錄下的a文件就是可執(zhí)行文件。
$ ls a.py a.spec build/ dist/
$ ls dist a
運(yùn)行一下試試:./dist/a 你好
$ ./dist/a 你好 print here: 你好
結(jié)果如預(yù)期,打包就完成了。接下來我們將dist目錄給到需要的人就行了。
小結(jié)
這里簡單介紹了pyinstaller的使用方法,在我們需要打包python程序的時(shí)候,pyinstaller是不二之選。特別需要注意的是,pyinstaller不能跨系統(tǒng)使用哦。
到此這篇關(guān)于pyinstaller將python程序打包為可執(zhí)行文件的文章就介紹到這了,更多相關(guān) python打包可執(zhí)行文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python解析網(wǎng)頁源代碼中的115網(wǎng)盤鏈接實(shí)例
這篇文章主要介紹了Python解析網(wǎng)頁源代碼中的115網(wǎng)盤鏈接實(shí)例,主要采用了正則表達(dá)式re模塊來實(shí)現(xiàn)該功能,需要的朋友可以參考下2014-09-09Opencv Python實(shí)現(xiàn)兩幅圖像匹配
這篇文章主要為大家詳細(xì)介紹了Opencv Python實(shí)現(xiàn)兩幅圖像匹配,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06解決運(yùn)行出現(xiàn)''dict'' object has no attribute ''has_key''問題
這篇文章主要介紹了快速解決出現(xiàn)class object has no attribute ' functiong' or 'var'問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python二進(jìn)制轉(zhuǎn)化為十進(jìn)制數(shù)學(xué)算法詳解
這篇文章主要介紹了Python二進(jìn)制轉(zhuǎn)化為十進(jìn)制數(shù)學(xué)算法,同時(shí)在這里也給大家分享一個(gè)好用的內(nèi)置函數(shù)map(),需要的朋友可以參考下2023-01-01Python機(jī)器學(xué)習(xí)應(yīng)用之基于LightGBM的分類預(yù)測(cè)篇解讀
這篇文章我們繼續(xù)學(xué)習(xí)一下GBDT模型的另一個(gè)進(jìn)化版本:LightGBM,LigthGBM是boosting集合模型中的新進(jìn)成員,由微軟提供,它和XGBoost一樣是對(duì)GBDT的高效實(shí)現(xiàn),原理上它和GBDT及XGBoost類似,都采用損失函數(shù)的負(fù)梯度作為當(dāng)前決策樹的殘差近似值,去擬合新的決策樹2022-01-01