.py to exe
Python的.py檔無法在未安裝Python編譯器的系統上直接執行,因此需要打包轉成exe檔。Python有許多.py檔轉成exe檔的套件,包刮py2exe、cx_Freeze、Pytinstaller,前兩個我試過各種一般正常教學方式安裝,都無法正常使用,可能是python3.x版不支援關係、也可能是中文編碼問題,總之就是轉不成功。Pyinstaller在win7 + Pyyhon3.5 + PyCharm下是可以成功轉檔的。Pyinstaller
Pyinstaller的安裝也並非一次就成功 [ 2016/07/14],在cmd下執行 pip install pyinstaller 會無法順利安裝,出現 UnicodeDecodeError: 'cp950' codec can't decode byte 0xe2 in position 208687,似乎是big5編碼環境造成的,因此必須安裝開發版本,安裝方法如下:
1. Pyinstaller的官方網站 http://www.pyinstaller.org/,找下方藍色背景的開發版本,並右鍵選複製連結網址,https://github.com/pyinstaller/pyinstaller/tarball/develop
2.然後到cmd下執行
pip install https://github.com/pyinstaller/pyinstaller/tarball/develop
即可安裝網址提供的開發版本,就能順利安裝了。 (Python_pip 介紹)
Pyinstaller參考資料:
和原始碼打包成一個文件夾或單一可執行文件(exe檔)。
使用方式:
執行 pyinstaller myscript.py
執行以上命令,PyInstaller 會做以下事情:
- 建立一個 myscript.spec
- 建立一個 build 資料夾
- 建立一些 log & 工作檔案在 build 中
- 建立一個 dist 資料夾 (此資料夾用來分享給別人)
- 建立執行檔在 dist 資料夾
簡單示範:
- 在要轉成exe的.py檔的資料夾下,執行 pyinstaller myscript.py 。
- 執行完後會在同個資料夾下產生[build] 跟 [dist] 資料夾,exe執行檔以及dll等各種檔案會存在 [dist] 資料夾中同myscript檔名資料夾內。
- 整個資料夾打包給別人,要使用時就執行myscript.exe檔即可。
...
倘若想要打包成只有exe檔等情況,也可以使用一些參數來達成。例如打包成一個exe檔案只要將執行命令改成pyinstaller myscript.py -F。
參數
-h, --help | show this help message and exit |
-v, --version | Show program version info and exit. |
--distpathDIR | Where to put the bundled app (default: ./dist) |
--workpath WORKPATH | |
Where to put all the temporary work files, .log, .pyz and etc. (default: ./build) | |
-y, --noconfirm | |
Replace output directory (default: SPECPATH/dist/SPECNAME) without asking for confirmation | |
--upx-dir UPX_DIR | |
Path to UPX utility (default: search the execution path) | |
-a, --ascii | Do not include unicode encoding support (default: included if available) |
--clean | Clean PyInstaller cache and remove temporary files before building. |
--log-level LEVEL | |
Amount of detail in build-time console messages. LEVEL may be one of DEBUG, INFO, WARN, ERROR, CRITICAL (default: INFO). |
-D, --onedir | Create a one-folder bundle containing an executable (default) |
-F, --onefile | Create a one-file bundled executable. |
--specpathDIR | Folder to store the generated spec file (default: current directory) |
-n NAME, --name NAME | |
Name to assign to the bundled app and spec file (default: first script’s basename) |
沒有留言:
張貼留言