一、為什么要對Python程序打包?
當手頭Python腳本的運行環境要求不同,時間又緊急,
處理數據時又要臨時搭建環境,很是麻煩
如果將Python腳本打包成可執行文件后會方便許多
也不用考慮運行環境的差異,隨時隨地運行
二、將Python程序打包的方法
我使用的是Python3.6 32位,windows8x64系統
這里直接推薦使用PyInstaller進行打包,至於為什么不用py2exe后面會說
1.安裝PyInstaller
首先你要有pip安裝工具,一般2.7.9以上或者3.4以上版本都內置了pip工具。假如你沒有,那么你可以參照https://www.cnblogs.com/limit1/p/8350344.html(windows系統)
http://www.runoob.com/w3cnote/python-pip-install-usage.html(Linux系統)
安裝好pip,打開cmd,輸入:
pip install pyinstaller
等待下載和安裝完成即可。
2.對Python程序進行打包
先要在命令行進入到打包目標目錄,並輸入:
pyinstaller -F test_demo.py
這里-F是指生成.exe文件,詳細內容https://blog.csdn.net/leida_wt/article/details/78698674
這里假如你使用的是Python3.6,那么恭喜,你會遇到這個錯誤

這是因為PyInstaller目前還不支持Python3.6 ,那么我們應該怎么辦呢?
我們需要到GitHub上下載改進版,地址https://github.com/pyinstaller/pyinstaller
下載解壓后將文件夾PyInstaller(沒有的話將pyinstaller-develop文件夾更名為PyInstaller)
復制到
這時候你會發現打包目錄里多了兩個文件夾build和dist,那個dist文件夾里就是你想要的.exe文件了

點擊運行就可以啦~~
另外要提一下,對於用到了多線程的Python程序需要單獨注意,PyInstaller有很多線程的問題,打包后雙擊exe程序運行時,程序會不停的啟動進程,但是並沒有真正執行進程(詳見https://blog.csdn.net/t1014336028/article/details/83018987)
按照網上提到的辦法,在 if __name__ == '__main__': 下面加一行代碼:multiprocessing.freeze_support(),再打包運行.exe文件,就可以跑起來了。
想了解更多有關PyInstaller的內容可以看這位大佬的博客http://ju.outofmemory.cn/entry/137370,還有針對PyInstaller打包的其他問題的解決辦法,非常全面,極力推薦
三、為什么不用py2exe
假如你使用的是py2exe,並已安裝完成,而且運行環境是Python3.6。
那么你仍會遇到這個錯誤 IndexError: tuple index out of range
官方文檔表示對Python3.6完全不支持
