1. 程式人生 > >使用Py2exe將PyQt程式打包為exe檔案

使用Py2exe將PyQt程式打包為exe檔案

更多1

1.簡介

Py2exe可以將一個Python程式打包成exe可執行檔案,方便沒有Python環境的電腦上使用程式。使用Py2exe打包需要編寫一個打包指令碼,執行後可以得到打包檔案。對於32位版本,Py2exe可以將程式打包成單檔案;對於64位版本,暫時還不支援打包成單檔案。不過,無論如何壓縮,目前Py2exe打包出來的程式都還是偏大的。

2.環境

環境1:
OS:Windows 7 64bits
Python:2.7.2(64bits)
PyQt: 4.9.6

環境2:
OS:Windows 7 32bits/Windows XP 32bits
Python:2.7.2(32bits)
PyQt: 4.9.6

3.軟體下載

Py2exe官網上提供的sourceforge的下載地址中,可以下載到2008年11月更新的0.6.9版本,包括針對Python2.3-2.7的32位版本和針對Python2.5-2.7的64位版本。

我們也可以到http://www.lfd.uci.edu/~gohlke/pythonlibs/這個網站下載0.6.10dev版本。順便說一句,請將此網站儲存至書籤,這裡提供了很多Python外掛官方版本中沒有支援的64位版本和Python版本的外掛編譯後的非官方下載。

4.安裝

雙擊exe檔案,一路next下去即可。需要注意的是,32位版本和64位版本必須和Python使用的版本配套。

5.使用

在一個PyQt專案中,新增一個檔案,其內容為:

Py2exe打包指令碼 Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 fromdistutils.core importsetup importpy2exe importsys #this allows to run it with a simple double click. sys.argv.append('py2exe') py2exe_options={ "includes":["sip"], "dll_excludes":["MSVCP90.dll",], "compressed":1, "optimize":2, "ascii":0, "bundle_files":1, } setup( name='PyQt Demo', version='1.0', windows=['pyqtdemo.py',], zipfile=None, options={'py2exe':py2exe_options} )

sys.argv.append('py2exe')一行,是允許程式通過雙擊的形式執行。

選項中“includes”是需要包含的檔案,這裡的”sip”是PyQt程式打包時需要新增的,如果不是PyQt程式不需要此項。

“dll_excludes”是需要排除的dll檔案,這裡的”MSVCP90.dll”檔案,如果不排除的話會報error: MSVCP90.dll: No such file or directory錯誤。

“compressed”為1,則壓縮檔案。

“optimize”為優化級別,預設為0。

“ascii”指自動包含encodings和codecs。

“bundle_files”是指將程式打包成單檔案(此時除了exe檔案外,還會生成一個zip檔案。如果不需要zip檔案,還需要設定zipfile = None)。1表示pyd和dll檔案會被打包到單檔案中,且不能從檔案系統中載入python模組;值為2表示pyd和dll檔案會被打包到單檔案中,但是可以從檔案系統中載入python模組。64位的Py2exe不要新增本句。

windows = ['pyqtdemo.py',],這裡使用的是windows,即沒有命令列窗口出現,如果使用console則表示有命令列窗口出現。

執行該檔案,會得到一個build資料夾和一個dist資料夾。其中,dist資料夾,就是你得到的打包程式。

如果按照上述程式碼執行成功,則應該dist資料夾中,只包括程式的exe檔案和w9xpopen.exe。w9xpopen.exe是針對windows9x版本的,一般來說該檔案並不需要。

如果bundle_files不為1、2,則dist資料夾中還會包括一些dll檔案和pyd檔案(Python Dll檔案)。如果bundle_files為2,dist資料夾會包括一個python##.dll檔案,如果為1則不會。

如果沒有使用zipfile=None,還會生成一個library.zip檔案。

6.常見問題

6.1 error: MSVCP90.dll: No such file or directory

解決方法,按如上程式,將該dll寫入dll_excludes中。

在其他電腦如果無法執行,可能是由於該電腦中沒有安裝Microsoft Visual C++ 2008 Redistributable - x86造成的,請到微軟官網上下載安裝該程式,或將MSVCP90.dll放入dist資料夾(注意:方法未驗證)

6.2 error: bundle-files 1 not yet supported on win64

對於64位的Py2exe而言,bundle_files選專案前仍不可用,無法生成為單檔案。

6.3 圖示等不顯示

網上的一種說法是這是Py2exe打包時沒有將其打包進來造成的,可以將“Python\Lib\site-packages\PyQt4\plugins\imageformats”資料夾複製到dist目錄下,再執行打包指令碼。不過我在實驗的過程中並沒有發現這個問題。

當然,一定要注意,把你圖示按照程式中寫的位置放入到dist目錄下。否則,當然不會顯示。

6.4 執行程式有命令列的黑框

將setup函式中的console改為windows。

相關推薦

使用Py2exePyQt程式打包exe檔案

更多1 1.簡介 Py2exe可以將一個Python程式打包成exe可執行檔案,方便沒有Python環境的電腦上使用程式。使用Py2exe打包需要編寫一個打包指令碼,執行後可以得到打包檔案。對於32位版本,Py2exe可以將程式打包成單檔案;對於64位版本,暫時還不支援打包成單檔案。不過,無論如何壓縮,

Python中使用pyinstallerpyqt所寫的程式打包exe檔案

Python中使用pyinstaller將pyqt所寫的程式打包為exe檔案 前言 最近需要寫一些小工具來輔助工作,其中一些想了想如果有一個簡單的介面的話應該使用起來更方便一些,由於python的方便性,大概試了一下python中的幾個常用的圖形庫,如wxPython與Tkinter

如何 Python 程式打包成 .exe 檔案

有不少訂閱本公眾號的朋友都不是玩 Python,甚至都不是計算機相關專業的,當我給他們一個 Python 程式時,他們是完全不知道該怎麼執行的。 於是我想是不是可以將我的程式打包成可執行檔案,直接執行? 就像這樣: Python 程式都是指令碼的方式,一般是

python程式打包exe檔案

第一步 安裝pyinstaller  以管理員方式執行命令提示符(cmd),輸入一下命令進行安裝pyinstaller pip install pyinstaller注意:pyinstaller安

python學習記錄之---------PYQT5做工具(3)python程式打包exe檔案

工具/版本(1)安裝環境:Windows7 64bit(2)使用版本Python3.6(3)pyqt5python檔案打包成exe格式,需要用到自帶的模組 pyinstaller一、pyinstaller安裝開啟cmd,輸入pip install pyinstaller回車,

python程式打包exe檔案和播放mp3

打包檔案 使用工具 PyInstaller 直接pip install 就可以 簡單使用 進入檔案目錄 pyinstaller my.py 出現 successful 則為成功 注意

把python3小程式打包exe檔案

本文針對python3。 這個技能雖然簡單,但很實用。嫌選擇idel麻煩,或者傳給沒有安裝python開發環境中的windows電腦時,尤其感覺到其方便。 首先是pip 安裝pyinstaller,即:pip install pyinstaller; 接下來在待打包檔案的資

編寫Python程式求地球表面兩點的球面距離,並打包exe檔案

編寫Python程式求地球表面兩點的球面距離 這是第一次使用Python針對具體需要來編寫一個相對完整的程式。 需求分析 有一個朋友常常需要計算兩個已知經緯座標的海上石油平臺之間的距離。 雖然這只是一個很簡單的解析幾何問題,但重複的計算依然耗時耗力。 設計一個程式來幫他完成這

如何程式打包exe檔案

下面以一個簡單的遊戲程式碼對其打包 程式碼如下 #include <stdio.h> #include <stdlib.h> #include<time.h> int main() { int a, b; srand(time

如何Java程式打包exe可執行檔案

步驟 第一步:將Java程式通過Eclipse或者JRE匯出成Jar包; 第二步:通過exe4j將Jar包程式生成exe可執行檔案。 解決java檔案編譯為class檔案時提示:“錯誤:編碼GBK

使用exe4jjava程式打包exe可執行檔案

1.將java程式打包成jar 使用第三方外掛fatjar生成jar檔案,將net.sf.fjep.fatjar_0.0.31.jar直接拷貝到MyEclipse安裝目錄下的dropins資料夾中,然後重啟Eclipse即可。 重啟完成後,右擊java專案會

windows下使用cx_freezePython程式打包exe可執行檔案

1.cxfreeze安裝 https://pypi.python.org/pypi/cx_Freeze 在以上地址可下載最新版本,選擇適合自己python版本的安裝包。安裝過程中會自動識別你的pytho

pythonGUI專案打包exe檔案

此專案分為兩步: GUI編寫程式 pyinstaller打包軟體 所用到的第三方庫: tkinter pyinstaller 具體實現 1. GUI介面 本次主要講解如何打包,所以在此只是設計一個十分簡單GUI介面本次主要講解如

Windows應用程式打包exe檔案(1)- 工具簡單總結

最近有對一個Windows應用程式少許維護和修改。修改之後要釋出新的exe安裝檔案,打包exe檔案時,遇到了很頭疼的問題,還好最後解決了,記錄一下。 Visual Studio版本:Visual Studio 2017 Visual Studio 201

Python指令碼打包exe檔案

把Python指令碼和所用到的庫打包為exe檔案,可以更方便的釋出程式,避免使用程式的每個電腦都必須安裝Python。網上有不少相關介紹,但很少見到Python 3.x下打包Python指令碼為exe的成功案例,筆者探索了一下,成功完成了任務,記錄下來分享給需要的朋友。歡迎交

python學習筆記--python原始檔打包exe檔案

:\>pyinstaller D:\codes\dpython.py執行完畢後,原始檔所在目錄將生成 dist 和 build 兩個資料夾。其中,build 目錄是 pyinstaller 儲存臨時檔案的目錄,可以安全刪除。最終的打包程式在 dist 內部的 dpython 目錄中。目錄中其他檔案是可執

使用pyinstaller把py檔案打包exe檔案

注:安裝pyinstall的先決條件是安裝PyWin32 pyinstall下載及安裝 下載地址: 或 pip install pyinstall 若是下載的安裝包,則下載解壓後進入cmd命令,cd pyinstall檔案目錄中執行 python setup.py in

python程式打包exe( pyintaller) 的用法

當我們用python寫好一個指令碼給沒安裝python直譯器的windows使用者使用時,那將無法執行指令碼! 而 pyinstaller 就是一個幫助我們將python程式打包成 exe 可執行檔案給沒安裝python直譯器的使用者使用的神器! 要使用 pyinstaller ,我們首先得安裝它: 使

使用Pyinstaller把Python程式打包exe檔案

前言 無論是為了裝逼還是為了實用,在實際過程中,我們經常需要將自己寫出的Python程式打包成exe檔案供其他windows使用者使用。Python打包工具不少,其bug也不少,坑極多,這裡只說自己使

如何JavaFX程式打包exe

網上有很多jar打包exe用的是 exe4j 或者 Jar2Exe Wizard 這樣的工具,我試了一下過程很繁瑣,而且還要去找軟體破解版。其實javafx程式打包成exe有兩種比較簡單的方法,普通的java程式也能用。 一、使用javafxpackager java