- 前言
在我們寫代碼的過程中,我們開發的腳本一般都會用到一些第三方包,可能別人也需要用到我們的腳本,如果我們將我們的xx.py文件發給他,他是不能直接用的,他還需要安裝python解釋器,甚至還要安裝我們用的那些第三方包,是不是有點小麻煩?但是我們都知道,PC是可以直接運行exe文件的,這就為我們提供了一個便捷的方式。所以,從看了這個教程以后,這都將成為過去式,打成exe之后,分享即可用。
PS: 如果打包為exe的話,版本盡量選擇python3.6+32位版本,因為win64位系統向下兼容32位程序,但是如果不考慮32位系統的話無所謂,直接python64位版本直接打包就可以,只是只能在win64位系統上跑。
下面正式開始將一下怎么開始打包python代碼(我用的是Anaconda3 64位的+pycharm)
- 安裝pyinstaler
首先安裝pyinstaller,使用安裝命令:pip3 install pyinstaller,如下圖所示。
- pyinstaler打包機制
我們寫的python腳本是不能脫離python解釋器單獨運行的,所以在打包的時候,至少會將python解釋器和腳本一起打包,同樣,為了打包的exe能正常運行,會把我們所有安裝的第三方包一並打包到exe。
即使我們的項目只使用的一個requests包,但是可能我們還安裝了其他n個包,但是他不管,因為包和包只有依賴關系的。比如我們只裝了一個requests包,但是requests包會順帶裝了一些其他依賴的小包,所以為了安全,只能將所有第三方包+python解釋器一起打包。如下圖所示。
藍色表示是安裝requests依賴的包
- Pyinstaler打包exe
1. 我們來將自己寫好的.py的文件打包成一個exe,我們直接cmd切換到這個腳本的目錄,執行命令:pyinstaller -F setup.py,如下圖所示:
[ps:可以直接在含有.py文件的目錄下地址框輸入cmd回車打開dos窗口,輸入pyinstaller -F setup.py 注意,-F兩邊是有空格的。Setup.py是我的文件名,到時候替換成自己的即可。]
ps: -F參數表示覆蓋打包,這樣在打包時,不管我們打包幾次,都是最新的,這個記住就行,固定命令。
2. 執行完畢之后,會生成幾個文件夾,如下圖所示。
3.在dist文件夾下,就有了一個exe程序,這個就是可執行的exe程序,如下圖所示。
雙擊這個.exe文件即可運行。
- 解決python打包生成的exe文件運行時提示缺少模塊問題
事情原委:當時我用pyinstaller -F D:\pythonProject\Opencv__3\02__A.py打包了一個exe程序,但是運行時提示我缺少cv2模塊然后我就去查pyinstaller的使用方法,找到pyinstaller有一個-p參數,使用這個-p參數可以指定多個打包路徑,因此可以利用-p參數來同時指定好工程文件路徑和需要一起打包的cv2模塊路徑:
- 注:查看包所在目錄方法:
- 使用win + R鍵打開運行欄,輸入cmd+回車,在dos窗口內輸入 pip list 回車即顯示安裝了多少包:
- 使用pip安裝完包后,只需再執行一次命令pip install xx,就會顯示安裝路徑。如:pip install jupyter安裝完成后,再次輸入pip install jupyter就會顯示此包已經安裝的路徑了
可以看出:
Jupyter安裝在C:\Users\xin\AppData\Local\Programs\Python\Python35\Lib\site-packages下面,記住這個路徑
則在打包時輸入 pyinstaller -F -p xx;yy.py
【xx即為剛才包的路徑,yy.py為要打包的工程文件】
然后打包成功,雙擊打開看看發現可以運行了。(*^▽^*)
轉載請注明出處,謝謝!!!