PyInstaller庫(kù)之科赫雪花小包裹

原作者:?https://developer.aliyun.com/article/745120

/1 前言/

嘿龙填,各位小伙伴,晚上好呀,我相信各位小伙伴都是python的愛好者瘾腰。也許我們不一定是專業(yè)的程序員板鬓,但是我們?nèi)匀豢梢酝ㄟ^代碼提高我們的效率悲敷,盡量少加班,多陪陪媳婦穗熬。再不行镀迂,讓代碼替我們干著重復(fù)的工作,我們有節(jié)省出來的時(shí)間打游戲不好嘛唤蔗,是吧探遵,哈哈哈。

但是呢妓柜,我們開發(fā)的腳本一般都會(huì)用到一些第三方包箱季,可能別人也需要用到我們的腳本,如果我們將我們的xx.py文件發(fā)給他棍掐,他是不能直接用的藏雏,他還需要安裝python解釋器,甚至還要安裝我們用的那些第三方包作煌,是不是有點(diǎn)小麻煩掘殴?但是我們都知道,PC是可以直接運(yùn)行exe文件的粟誓,這就為我們提供了一個(gè)便捷的方式奏寨。所以,從看了這個(gè)教程以后鹰服,這都將成為過去式病瞳,打成exe之后,分享即可用悲酷。

PS: 如果打包為exe的話套菜,版本盡量選擇python3.6+32位版本,因?yàn)閣in64位系統(tǒng)向下兼容32位程序设易,但是如果不考慮32位系統(tǒng)的話無所謂逗柴,直接python64位版本直接打包就可以,只是只能在win64位系統(tǒng)上跑顿肺。

/2 安裝pyinstaller/

首先安裝pyinstaller戏溺,使用安裝命令:pip3 install pyinstaller,如下圖所示挟冠。

/3 pyinstaller打包機(jī)制/

我們寫的python腳本是不能脫離python解釋器單獨(dú)運(yùn)行的于购,所以在打包的時(shí)候袍睡,至少會(huì)將python解釋器和腳本一起打包知染,同樣,為了打包的exe能正常運(yùn)行斑胜,會(huì)把我們所有安裝的第三方包一并打包到exe控淡。

即使我們的項(xiàng)目只使用的一個(gè)requests包嫌吠,但是可能我們還安裝了其他n個(gè)包,但是他不管掺炭,因?yàn)榘桶挥幸蕾囮P(guān)系的辫诅。比如我們只裝了一個(gè)requests包,但是requests包會(huì)順帶裝了一些其他依賴的小包涧狮,所以為了安全炕矮,只能將所有第三方包+python解釋器一起打包。如下圖所示者冤。

? 藍(lán)色表示是安裝requests依賴的包肤视,看到了吧!

/4 Pyinstaller打包exe/

這里呢涉枫,我就拿剛給同事寫辦公自動(dòng)化腳本示例一下邢滑。源碼示例效果,如下圖所示愿汰。

1困后、我們來將這個(gè).py的文件打包成一個(gè)exe,我們直接cmd切換到這個(gè)腳本的目錄衬廷,執(zhí)行命令:pyinstaller-F setup.py摇予,如下圖所示。

ps: -F參數(shù)表示覆蓋打包泵督,這樣在打包時(shí)趾盐,不管我們打包幾次,都是最新的小腊,這個(gè)記住就行救鲤,固定命令。

2秩冈、執(zhí)行完畢之后本缠,會(huì)生成幾個(gè)文件夾,如下圖所示入问。

3丹锹、在dist里面呢,就有了一個(gè)exe程序芬失,這個(gè)就是可執(zhí)行的exe程序楣黍,如下圖所示。

4棱烂、我們把這個(gè)setup.exe拖到和setup.py平級(jí)的目錄租漂,我們來運(yùn)行一下這個(gè),效果圖如下圖所示。

5哩治、這樣秃踩,我們就完成了一個(gè)打包工作,如果別人需要业筏,即使沒有python環(huán)境憔杨,他依然可以運(yùn)行。

6蒜胖、接下來我們?cè)賮泶虬粋€(gè)帶界面的消别,這里我用pyqt5寫了一個(gè)最簡(jiǎn)單的框架,看一下打包成exe是否能運(yùn)行成功台谢,效果圖如下圖所示妖啥。

我們可以看到,后面有一個(gè)黑洞洞的窗口对碌,這就有點(diǎn)尷尬了荆虱,所以,我們的打包命令也要變一下朽们。

7怀读、執(zhí)行 pyinstaller -F -wsetup.py 多加-w以后,就不會(huì)顯示黑洞洞的控制臺(tái)了骑脱,這里就不做演示啦菜枷!

8、但是我們打包的exe叁丧,我們的圖標(biāo)呀啤誊,實(shí)在是有點(diǎn)丑陋,默認(rèn)的拥娄,沒有一點(diǎn)自己的風(fēng)格蚊锹,那么,我們應(yīng)該怎么改一下呢稚瘾?

執(zhí)行命令:pyinstaller -F -w-i wind.ico setup.py牡昆,如下圖所示。

9摊欠、默認(rèn)打包圖片丢烘,如下圖所示。

10些椒、加上 -i 參數(shù)之后播瞳,如下圖所示,會(huì)形成一個(gè)類似風(fēng)力發(fā)電機(jī)的logo圖案免糕。

ps:程序路徑最好全部都是英文赢乓,否則肯能會(huì)出現(xiàn)莫名其妙的問題

11痒给、到此,我們能用到的pyton打包成exe命令都總結(jié)完了

/5 總結(jié)命令/

Pyinstaller -F setup.py 打包exe

Pyinstaller -F -w setup.py 不帶控制臺(tái)的打包

Pyinstaller -F -i xx.ico setup.py 打包指定exe圖標(biāo)打包

平常我們只需要這三個(gè)就好了骏全,足夠滿足所有需求了。

/6 結(jié)語(yǔ)/

到這之后呢尼斧,python打包成exe基本算是結(jié)束了姜贡,記得一定要把pip升級(jí)成最新版的pip在安裝pyinstaller哈。要不然可能會(huì)出現(xiàn)莫名奇妙的問題棺棵。不信邪的小伙伴們可以自己試試看楼咳,多碰碰壁也是可以學(xué)到很多的。

其他資料:

PyInstaller是一個(gè)第三方庫(kù)烛恤。它可以實(shí)現(xiàn)將.py擴(kuò)展名的任何Python的源代碼轉(zhuǎn)換成Windows(exe文件)母怜、Linux,Mac OS X下面的可執(zhí)行文件

下載: 命令行輸入:pip install pyinstaller

安裝之后它會(huì)安裝生成一個(gè)文件缚柏,也是一個(gè)命令叫 PyInstaller苹熏。通過?PyInstaller命令將一個(gè)源文件打包生成可執(zhí)行文件。PyInstaller是命令行的執(zhí)行程序币喧,不是Python下面的執(zhí)行指令轨域,所以要在cmd的命令行下,我們使用 PyInstaller -F <文件名.py>

實(shí)例:科赫雪花小包裹

在這個(gè)事例中我們需要介紹一種曲線:科赫曲線杀餐。為了了解科赫曲線我們需要了解分形幾何干发,簡(jiǎn)單說分形幾何就是一種具有迭代關(guān)系的幾何圖形,它廣泛的存在于自然界中

分形幾何中有一種特殊的曲線叫做科赫曲線史翘,也叫雪花曲線枉长。科赫曲線是一種用于分形的曲線琼讽。



命令行執(zhí)行

科赫曲線繪制源代碼

#KochDrawV1.py

import?turtle

def?koch(size,?n):

????if?n?==?0:

????????turtle.fd(size)

????else:

????????for?angle?in?[0,?60,?-120,?60]:

???????????turtle.left(angle)

???????????koch(size/3,?n-1)

def?main():

????turtle.setup(800,400)

????turtle.penup()

????turtle.goto(-300,?-50)

????turtle.pendown()

????turtle.pensize(2)

????koch(600,3)?????#?0階科赫曲線長(zhǎng)度必峰,階數(shù)

????turtle.hideturtle()

main()科赫雪花繪制源代碼



#KochDrawV2.py

import?turtle

def?koch(size,?n):

????if?n?==?0:

????????turtle.fd(size)

????else:

????????for?angle?in?[0,?60,?-120,?60]:

???????????turtle.left(angle)

???????????koch(size/3,?n-1)

def?main():

????turtle.setup(600,600)

????turtle.penup()

????turtle.goto(-200,?100)

????turtle.pendown()

????turtle.pensize(2)

????level?=?3??????#?3階科赫雪花,階數(shù)

????koch(400,level)?????

????turtle.right(120)

????koch(400,level)

????turtle.right(120)

????koch(400,level)

????turtle.hideturtle()

main()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钻蹬,一起剝皮案震驚了整個(gè)濱河市自点,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脉让,老刑警劉巖桂敛,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異溅潜,居然都是意外死亡术唬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門滚澜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粗仓,“玉大人,你說我怎么就攤上這事孔轴《掌剩” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵反症,是天一觀的道長(zhǎng)蚂斤。 經(jīng)常有香客問我存捺,道長(zhǎng),這世上最難降的妖魔是什么曙蒸? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任捌治,我火速辦了婚禮,結(jié)果婚禮上纽窟,老公的妹妹穿的比我還像新娘肖油。我一直安慰自己,他們只是感情好臂港,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布森枪。 她就那樣靜靜地躺著,像睡著了一般审孽。 火紅的嫁衣襯著肌膚如雪疲恢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天瓷胧,我揣著相機(jī)與錄音显拳,去河邊找鬼。 笑死搓萧,一個(gè)胖子當(dāng)著我的面吹牛杂数,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瘸洛,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼揍移,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了反肋?” 一聲冷哼從身側(cè)響起那伐,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎石蔗,沒想到半個(gè)月后罕邀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡养距,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年诉探,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棍厌。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肾胯,死狀恐怖竖席,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情敬肚,我是刑警寧澤毕荐,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站艳馒,受9級(jí)特大地震影響憎亚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鹰溜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丁恭。 院中可真熱鬧曹动,春花似錦、人聲如沸牲览。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)第献。三九已至贡必,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間庸毫,已是汗流浹背仔拟。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留飒赃,地道東北人利花。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像载佳,于是被迫代替她去往敵國(guó)和親炒事。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容