發布Python桌面應用程序(入門)

使用你程序的人一定是想有某種便利,而Python程序的運行依賴於Python解釋器、庫文件等資源,直接發布源代碼需要用戶電腦上有和編寫程序時一樣的環境。如果功能不足夠誘人,他們會放棄的!這時候需要一個工具將寫好的Python程序,轉換成單個可執行文件,想要使用的人下載到計算機後就可直接使用。PyInstaller做的很好!

PyInstaller(3.1)功能一覽:

  1. 全自動打包
  2. 支持單個文件夾發布
  3. 支持單個文件發布
  4. 可以加密代碼
  5. 代碼簽名(Windows、Mac OS X)
  6. upx壓縮
  7. 版本信息
  8. 多版本(Python2.7、Python3.3、Python3.4、Python3.5)
  9. 跨平台(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:

注意:

  1. PyInstaller3.1.1有一個bug,可以生成版本文件,但會產生一個異常導致成功的消息不能顯示,開發版已經修復。

  2. Windows 路徑名包含空格時需要把路徑包含在雙引號里。

安裝:

$ pip install pyinstallern開發版n$ pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zipn

為什麼使用PyInstaller ?

因為它簡單。其他幾個的問題包括不能自動打包MSVCR*.DLL、要寫腳本等。

同類應用:

  1. py2app
  2. cx_freeze

  3. py2exe

壓縮程序UPX:

安裝後把UPX.exe加入path,再使用pyinstaller時就會自動啟用壓縮了。

UPX下載鏈接


推薦閱讀:

100行深度學習文本分類
UserDict、UserString、UserList存在的意義
文件里寫的是unicode,用python怎麼讀取成文本?
如何用Python和機器學習炒股賺錢?

TAG:Python | wxPython | 桌面应用 |