將Python打包成 exe 檔

一、前言
利用Python寫了一個小腳本想要傳給使用Windows但沒有裝Python的朋友執行，這時候就可以利用將檔案包裝成exe檔案，讓沒有Python的朋友也可以執行。本篇將介紹利用套件「PyInstaller」製作exe檔。
筆者環境目前為：Windows 10 (64位元)與Power Shell與Python3。

二、PyInstaller簡介
 
三、安裝方法
#透過pip安裝pyinstaller
pip install pyinstaller
#如果失敗可以使用以下的方法進行安裝
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz
#目前可支援Python 2.7 and 3.3—3.6

常用參數介紹
1. pyinstaller -h 來查看參數
2. -F 打包成一個exe文件
3. –icon=圖標路徑
4. -w 使用視窗，無控制台
5. -c 使用控制台，無視窗
6. -D 創建一個目錄，包含exe以及其他一些依賴性文件

四、舉個例子
如下圖所示，我們編寫一個輸出Hello,Pyladies!的Python程式，並利用input()使程式可以暫時停在輸出畫面。
Windows使用者執行pyinstaller -F .\hello.py ，會在命令框看到目前進度。
mac 使用者則是執行 pyinstaller -F ./hello.py ， 因為command line 是正斜線。
 
可以透過進度發現這個套件在執行命令之後：
1. 會先建立一個 hello.spec
2. 建立「build」 資料夾
3. 建立 log紀錄檔與工作檔案於資料夾 build 中
4. 建立 「dist 」資料夾
5. 建立執行檔(.exe)在 「dist」 資料夾
進入「dist」資料夾可看見執行檔。
可執行程式，如圖所示。

何謂__pycache__ ?
放編譯時需要的檔案用的檔案。
當你在python中運行程序時，解釋器首先將其編譯為字節碼(這是一個過度簡化)，並將其存儲在__pycache__文件夾中。~代碼日誌
編譯不出現的方法：利用python -B foo.py使__ pycache__資料夾不出現。

五、注意事項
執行檔案可在win8/win10,64位元的電腦運行，但win7 x64和其餘所有32位失敗，會提示不兼容，若要能32位元與64位元皆可運行，就要在Python 32位元的環境下編譯PyInstaller打包exe，才能在32位元與64位元成功。

六、參考資料
1. https://pyinstaller.readthedocs.io/en/stable/
2. https://www.pyinstaller.org/
3. http://zwindr.blogspot.tw/2016/01/python-pyinstaller.html
4. http://blog.csdn.net/MrLevo520/article/details/51840217
5. http://blog.csdn.net/zt_xcyk/article/details/73786659
6. https://codeday.me/bug/20170403/7622.html
7. https://blog.csdn.net/index20001/article/details/73501375
8. https://www.ibm.com/support/knowledgecenter/zh-tw/SS3JRN_7.2.0/com.ibm.itcamsoa.doc/kd4ugmst18.htm
 
七、備註
注意： script/pyinstaller-script.py 檔案編碼。