發布Python桌面應用程序(入門)
使用你程序的人一定是想有某種便利,而Python程序的運行依賴於Python解釋器、庫文件等資源,直接發布源代碼需要用戶電腦上有和編寫程序時一樣的環境。如果功能不足夠誘人,他們會放棄的!這時候需要一個工具將寫好的Python程序,轉換成單個可執行文件,想要使用的人下載到計算機後就可直接使用。PyInstaller做的很好!
PyInstaller(3.1)功能一覽:
- 全自動打包
- 支持單個文件夾發布
- 支持單個文件發布
- 可以加密代碼
- 代碼簽名(Windows、Mac OS X)
- upx壓縮
- 版本信息
- 多版本(Python2.7、Python3.3、Python3.4、Python3.5)
- 跨平台(Windows、 Linux、 Mac OS X、FreeBSD、 Solaris 、 AIX)
常用命令:
生成單個可執行文件
$ pyinstaller --onefile main.pyn
單個文件夾
--onedir n
不壓縮
--noupx # 默認開啟壓縮 在可執行路徑搜索UPX程序n
加密Python位元組碼
--key 1123n
程序版本
--version-file version_filen
指定upx目錄
--upx-dir E:UPX # 不能包含upx.exen
顯示控制台
--console # 可以看到程序的輸出n
不顯示控制台,僅GUI
--windowedn
指定圖標
--icon 圖標.ico # ico是Windows icns是Mac OS Xn
程序版本設定(僅Windows)
提取版本文件:
$ pyi-grab_version exe_path out_filename # 用法n
$ pyi-grab_version "C:Program FilesInternet Exploreriexplore.exe" # 例子
自定義程序版本:
默認是UTF-8編碼,包含任何Unicode字元都可以。下面是發布自己程序時需要修改的地方,以搜狗輸入法為例子:
filevers=(7, 8, 0, 7049),n # 文件版本n prodvers=(7, 8, 0, 7049), # 產品版本nnkids=[n StringFileInfo(n [n StringTable(n u080404b0,n [StringStruct(uCompanyName, uSogou.com Inc.), # 公司名 不顯示nn # 文件描述n StringStruct(uFileDescription, u搜狗拼音輸入法 安全啟動程序), n n # 文件版本n StringStruct(uFileVersion, u7.8.0.7049),n n # 內部名字 不顯示n StringStruct(uInternalName, uSogouPY Config),nn # 版權聲明n StringStruct(uLegalCopyright, u? 2015 Sogou.com Inc. All rights reserved.),nn # 原始文件名n StringStruct(uOriginalFilename, uSogouExe.exe),nn # 產品名n StringStruct(uProductName, u搜狗拼音輸入法),nn # 產品版本n StringStruct(uProductVersion, u7.8.0.7049)])n ]), n VarFileInfo([VarStruct(uTranslation, [2052, 1200])])n ]n
Windows 8.1:
- PyInstaller3.1.1有一個bug,可以生成版本文件,但會產生一個異常導致成功的消息不能顯示,開發版已經修復。
- Windows 路徑名包含空格時需要把路徑包含在雙引號里。
安裝:
$ pip install pyinstallern開發版n$ pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zipn
因為它簡單。其他幾個的問題包括不能自動打包MSVCR*.DLL、要寫腳本等。
同類應用:
- py2app
- cx_freeze
- py2exe
壓縮程序UPX:
安裝後把UPX.exe加入path,再使用pyinstaller時就會自動啟用壓縮了。
UPX下載鏈接
推薦閱讀:
※100行深度學習文本分類
※UserDict、UserString、UserList存在的意義
※文件里寫的是unicode,用python怎麼讀取成文本?
※如何用Python和機器學習炒股賺錢?