成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python打包成exe終極方案

開發 后端
目前比較常見的打包exe方法都是通過Pyinstaller來實現的,本文也將使用這種常規方法。如果對這塊已經很熟悉的小伙伴,可以直接下滑到本文下半部分。

 目前比較常見的打包exe方法都是通過Pyinstaller來實現的,本文也將使用這種常規方法。如果對這塊已經很熟悉的小伙伴,可以直接下滑到本文下半部分。

為什么要打包?

眾所周知,Python腳本不能在沒有安裝Python的機器上運行。

那我們如果寫了一個數據分析/自動化辦公的小腳本,想分享給同事小姐姐使用,可她電腦又沒有裝Python。

這個時候如果將腳本打包成exe文件,微信發送給她,即使她的電腦上沒有安裝Python解釋器,這個exe程序也能在上面運行。豈不美哉?

[[400533]]

(當然,想通過幫安裝Python跟小姐姐建立感情的話,就當我沒說)

安裝Pyinstaller

首先我們要先安裝Pyinstaller,直接在cmd使用pip命令 

  1. pip install pyinstaller  

如果網速太慢可以切換國內源來加速,本文其他部分直接使用國內源,不再重復注釋。

 

  1. pip install -i https://pypi.douban.com/simple/ pyinstaller #豆瓣源  
  2. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清華源 

Pyinstaller打包步驟

這里我們拿之前《Python自動化辦公 | 同事要我幫忙補寫178份Word日報!》這篇的python代碼,作為案例來演示。將其中腳本py_word.py,待處理的表格文件workbook.xlsx,以及準備好的軟件圖標圖片chengzi.ico放在了我電腦的F:\py_word目錄下(如果大家感興趣的話,可以在文末下載獲取)

1、cmd切換到我們剛剛放文件的目錄

2、執行命令Pyinstaller -F -w -i chengzi.ico py_word.py,執行過程特別漫長,就沒有錄制動圖。

執行完畢會發現當前目錄多了幾個文件夾,打開其中名為dist的文件夾。

已經生成了一個名為py_word的exe應用程序,并且圖標也是我們設置的橙子圖案,看來已經成功一半了。

要不運行一下,試試能否正常生成word日報?

打包exe后執行

成功運行,可惜就是文件有點大(339M)

[[400535]]

Pyinstaller參數詳解

說回剛剛執行的命令 

  1. Pyinstaller -F -w -i chengzi.ico py_word.py 

給大家解釋一下其中Pyinstaller的參數,其中-F參數代表制作獨立的可執行程序。

-w是指程序啟動的時候不會打開命令行。如果不加-w的參數,就會有黑洞洞的控制臺窗口出來。比如在剛才的腳本里我加一行print('Hello World!'),那么就不要放-w參數了,不然運行會報錯,畢竟Hello World!需要在命令行里打印出來。此外,-w參數在GUI界面時非常有用。

最后的-i chengzi.ico就是指設置自己的圖標圖案,因為默認打包圖片是下圖這樣的。這個參數也可以寫成--icon=chengzi.ico

[[400536]]

最后稍微總結一下: 

  1. Pyinstaller -F py_word.py 打包exe  
  2. Pyinstaller -F -w py_word.py 不帶控制臺的打包  
  3. Pyinstaller -F -w -i chengzi.ico py_word.py 打包指定exe圖標打包 

以上三個是比較常用的參數,其他參數詳見下表

Pyinstaller參數大全

ico圖片生成

自己做的軟件都喜歡放上自己的圖標,不過哪來那么多ico圖片呢?

一個是可以找專門的ico圖片網站,不過都很小眾,圖片庫也很小。

另一個是可以自己生成,這里就給大家分享一個網站,可以把其他格式圖片轉成ico格式:https://app.xunjiepdf.com/img2icon/

ico圖片格式轉換

壓縮打包

好了,小伙伴們

來到了最激動人心的時刻,剛剛生成的exe實在太大了,300多M的軟件程序想用微信傳一下都費勁。

我也試過很多方法,比如:修改spec文件自定義打包、pipenv 虛擬環境、使用開源的upx壓縮等等,但是往往要么過程比較麻煩,要么成功率不高(壓縮成不成功全看臉)。

而我要分享的,是自己一直在用的,最簡單且成功率極高的方法——conda創建虛擬環境。

[[400537]]

Python打包為什么大?

在壓縮打包之前,先簡單說一下為什么Python打包過大?

Python打包exe,不但體積大而且運行奇慢。解釋型語言大都是這個樣子,只不過Python尤其突出。要解決大而慢,只能用編譯型語言,如C,C++,甚至VB都好很多,體積最小的是匯編。[1]

此外,還有知乎大佬說是因為“Anaconda里內置了很多庫,打包的時候打包了很多不必要的模塊進去,要用純凈的Python來打包。”

所以我們可以模擬一個新環境,其中只安裝我們本次打包所必要的工具包即可。

那最適合的就是——虛擬環境了!

虛擬環境

Python創建虛擬環境的方法有很多,而我是個Anaconda忠實用戶,如果你跟我一樣,那就簡單了。(大家也可以使用Virtualenv、Pipenv來設置虛擬環境,善用搜索,方法大同小異)

先記幾個命令,很簡單 

  1. conda create -n 虛擬環境名字 python==3.6  #創建虛擬環境  
  2. conda activate 虛擬環境名字  #激活虛擬環境  
  3. conda deactivate  #退出虛擬環境 

從開始菜單運行“Anaconda Prompt”,出現的界面輸入創建虛擬環境的指令。成功創建了一個名字為aotu,且基于python版本3.6的虛擬環境。

在創建過程中需要回復(y/n),Yes,再激活虛擬環境

conda安裝的虛擬環境,會把虛擬環境的目錄生成在anaconda安裝目錄下的env目錄下。

當然我們也可以在剛剛的窗口,使用命令conda info --envs,來查看conda環境下所有的虛擬環境

安裝所需的庫

上面我們已經創建并激活了名為aotu虛擬環境,輸入conda list可以查看當前虛擬環境里已經安裝的庫。

我們打開所要打包的Python腳本,對比上圖,發現pandas,docx這兩個庫還需要額外安裝。當然,也不能缺了打包必不可少的pyinstaller庫。

待打包腳本

安裝庫的過程不再贅述 

  1. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas  
  2. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx  
  3. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller 

安裝后再看

已成功安裝,還有一些因為這幾個庫所附帶安裝的,就不管他們了。

Pyinstaller打包步驟

這里就不再重復了,只換個蘋果圖標試試 

  1. Pyinstaller -F -w -i apple.ico py_word.py 

生成

成功壓縮到29.8M,如果不導入pandas這位大神,應該就可以10多M了

運行一下,毫無問題

最后再簡單總結一下虛擬環境+打包的全過程(只三步): 

  1. #創建虛擬環境  
  2. conda create -n aotu python=3.6  
  3. #激活虛擬環境  
  4. conda activate aotu  
  5. #Pyinstaller打包  
  6. Pyinstaller -F -w -i apple.ico py_word.py 

總結一些小坑

1、說起來還是有點玄學,上文中一模一樣的過程我在兩個電腦都執行過一遍。在其中一個上顯示缺少xlrd這個庫,安裝后成功打包,也是一樣的大小。小伙伴們可以在文末獲取文件,也試試。

2、在安裝庫是要注意一些庫名,比如docx這個庫不要pip install docx,而是需要 

  1. pip install python-docx 

還有一些庫可能因為版本不同導致不能使用,多碰碰壁就好了。

3、為了防止打包時候有些庫沒安裝好,可以先在虛擬環境中執行一下Python腳本。運行無誤的話再打包,比較保險。

4、最后,如果想要刪除虛擬環境的話,可執行下方命令

  1. conda remove -n aotu--all  

5、打包為exe的話,版本盡量選擇python3.6+32位版本,因為win64位系統向下兼容32位程序,但是如果不考慮32位系統的話無所謂,直接python64位版本直接打包就可以,只是只能在win64位系統上跑。[2] 

 

責任編輯:龐桂玉 來源: Python之禪
相關推薦

2024-02-20 08:51:56

PythonFlask工具

2022-09-02 14:37:46

復制粘貼Pythonexe

2023-11-22 12:33:51

Pythonexe

2022-05-23 09:25:39

Pythonexe腳本

2021-05-07 21:53:44

Python 程序pyinstaller

2021-05-08 12:30:03

Pythonexe代碼

2022-01-11 09:59:23

Python關機程序文件

2021-08-30 12:45:37

nodejsbash前端

2021-10-08 09:27:11

Python圖形化工具

2021-09-14 13:00:17

nodejsbash前端

2025-03-04 07:40:00

Python模塊開發

2010-03-15 11:11:12

Pthon文件編譯

2011-09-13 17:30:41

Eclipse And

2011-07-08 13:44:08

Xcode 打包

2024-04-26 08:34:44

Python編程語言PyInstalle

2021-03-28 07:47:01

JavaWeb項目windows

2022-03-16 19:36:16

Python工具代碼

2022-08-11 10:07:59

Python工具代碼

2021-11-23 09:42:28

Pythonexepy

2011-03-25 13:35:36

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一二区视频 | 中文字幕在线免费观看 | www.4hu影院 | 91亚洲视频在线 | 成人精品视频免费 | 国产精品视频网站 | 日韩一区二区在线播放 | 欧美日韩国产欧美 | 日韩久久中文字幕 | 成人在线播放网站 | 午夜影晥 | 亚洲高清av在线 | 日韩a视频 | 天堂久久久久久久 | 国产精品一区二区三区在线播放 | 国产精品永久免费观看 | 啪啪免费 | 欧美一区视频 | 亚洲精品视频一区 | 久久久久久久久久久久久久av | 中文字幕国产视频 | 午夜丰满寂寞少妇精品 | 国产精品国产精品国产专区不卡 | 国产精品视频综合 | 97国产精品| 99re国产视频 | 亚洲一区国产精品 | 欧美精品欧美精品系列 | 欧美黄色一区 | 亚洲精品久久久久久久久久久久久 | 嫩草视频入口 | 免费看黄视频网站 | 麻豆91精品91久久久 | 欧美日韩一区二区在线观看 | 天堂在线免费视频 | 欧美精品在线免费 | av毛片在线免费观看 | 美女福利视频 | 精产国产伦理一二三区 | 美女福利网站 | 国产精品视频免费观看 |