前言
也許我們不一定是專業的程式設計師,但是我們仍然可以通過**提高我們的效率,盡量少加班,多陪陪媳婦。再不行,讓**替我們幹著重複的工作,我們有節省出來的時間打遊戲不好嘛,是吧,哈哈哈。
但是呢,我們開發的指令碼一般都會用到一些第三方包,可能別人也需要用到我們的指令碼,如果我們將我們的xx.py檔案發給他,他是不能直接用的,他還需要安裝python直譯器,甚至還要安裝我們用的那些第三方包,是不是有點小麻煩?但是我們都知道,pc是可以直接執行exe檔案的,這就為我們提供了乙個便捷的方式。所以,從看了這個教程以後,這都將成為過去式,打成exe之後,分享即可用。
ps: 如果打包為exe的話,版本盡量選擇python3.6+32位版本,因為win64位系統向下相容32位程式,但是如果不考慮32位系統的話無所謂,直接python64位版本直接打包就可以,只是只能在win64位系統上跑。
安裝pyinstaller
首先安裝pyinstaller,使用安裝命令:pip3 install pyinstaller,如下圖所示。
pyinstaller打包機制
我們寫的python指令碼是不能脫離python直譯器單獨執行的,所以在打包的時候,至少會將python直譯器和指令碼一起打包,同樣,為了打包的exe能正常執行,會把我們所有安裝的第三方包一併打包到exe。
即使我們的專案只使用的乙個requests包,但是可能我們還安裝了其他n個包,但是他不管,因為包和包只有依賴關係的。比如我們只裝了乙個requests包,但是requests包會順帶裝了一些其他依賴的小包,所以為了安全,只能將所有第三方包+python直譯器一起打包。如下圖所示。其中藍色表示是安裝requests依賴的包,看到了吧!
pyinstaller打包exe
這裡呢,我就拿剛給同事寫辦公自動化指令碼示例一下。原始碼示例效果,如下圖所示。
1、我們來將這個.py的檔案打包成乙個exe,我們直接cmd切換到這個指令碼的目錄,執行命令:pyinstaller-f setup.py,如下圖所示。
ps: -f引數表示覆蓋打包,這樣在打包時,不管我們打包幾次,都是最新的,這個記住就行,固定命令。
2、執行完畢之後,會生成幾個資料夾,如下圖所示。
3、在dist裡面呢,就有了乙個exe程式,這個就是可執行的exe程式,如下圖所示。
4、我們把這個setup.exe拖到和setup.py平級的目錄,我們來執行一下這個,效果圖如下圖所示。
5、這樣,我們就完成了乙個打包工作,如果別人需要,即使沒有python環境,他依然可以執行。
6、接下來我們再來打包乙個帶介面的,這裡我用pyqt5寫了乙個最簡單的框架,看一下打包成exe是否能執行成功,效果圖如下圖所示。
我們可以看到,後面有乙個黑洞洞的視窗,這就有點尷尬了,所以,我們的打包命令也要變一下。
7、執行 pyinstaller -f -wsetup.py 多加-w以後,就不會顯示黑洞洞的控制台了,這裡就不做演示啦!
8、但是我們打包的exe,我們的圖示呀,實在是有點醜陋,預設的,沒有一點自己的風格,那麼,我們應該怎麼改一下呢?
執行命令:pyinstaller -f -w-i wind.ico setup.py,如下圖所示。
9、預設打包,如下圖所示。
10、加上 -i 引數之後,如下圖所示,會形成乙個類似風力發電機的logo圖案。
ps:程式路徑最好全部都是英文,否則肯能會出現莫名其妙的問題
11、到此,我們能用到的pyton打包成exe命令都總結完了
總結命令
pyinstaller -f setup.py 打包exe
pyinstaller -f -w setup.py 不帶控制台的打包
pyinstaller -f -i xx.ico setup.py 打包指定exe圖示打包
平常我們只需要這三個就好了,足夠滿足所有需求了。
結語
到這之後呢,python打包成exe基本算是結束了,記得一定要把pip公升級成最新版的pip在安裝pyinstaller哈。要不然可能會出現莫名奇妙的問題。
不信邪的小夥伴們可以自己試試看,多碰碰壁也是可以學到很多的。
python 打包成exe程式
1.需要安裝 py2exe 2.示例 exetest.py 建立乙個gui介面,只用乙個標籤和按鈕,無功能 from tkinter import win tk label label win,text hello btn button win,text click label.pack btn.p...
python如何打包成exe程式
如果要公開發布程式,最常見的方式就是打包成exe程式了。打包的好處是使用者不需要考慮python的執行環境,且也容易被接受。但不好的是一般打包出來的程式都比較大,而且由於是依靠模組打包,有可能出現相容性等問題。筆者常用的打包模組是pyinstaller。常用的打包命令是 pyinstaller f ...
把python程式打包成exe程式
python64位和32位打包出來的程式不能通用 需要注意的是,pyinstaller打包的執行檔案,只能在和打包機器系統同樣的環境下。也就是說,不具備可移植性,若需要在不同系統上執行,就必須針對該平台進行打包。摘自 我在64 win7系統 64位的python 打包程式,在win7 32和winx...