一、簡介
py2exe是一個將python腳本轉換成windows上的可獨立執行的可執行程序(*.exe)的工具,這樣,你就可以不用裝python而在windows系統上運行這個可執行程序。
py2exe已經被用於創建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的獨立程序。py2exe是發布在開源許可證下的。目前只有python2.x的才有對應版本的。
二、安裝py2exe
方式一:
而我直接使用pip install py2exe ,而我使用的Python版本是3.6,這在后續打包的過程中,出現問題,即執行:python mysetup.py py2exe
經查閱,版本不兼容:
The failure you're seeing occurs in py2exe opcode parsing code, which, given the most recent posted version of py2exe only claims support for 3.3 and 3.4, could not possibly have knowledge of, or support for, the new wordcode opcodes; they hadn't even been conceived of at the time py2exe was last updated. The bytecode often changes in small ways from version to version that could break even Python 3.5 (given only 3.3 and 3.4 support is claimed explicitly), but 3.6 is 100% guaranteed to fail.存在版本不適用性,
但是對於其他版本應該沒有什么問題,如果想用py2exe的朋友,可以嘗試其他的版本
方法二
python3.6不行,所以就選擇用python2.7,結果告知需要3.3及以上版本,我安裝了2.7和3.6,很巧都不合適,
解決辦法:下載 https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/exe程序直接雙擊運行即可。注意安裝過程中的路徑。
三、py2exe的用法
如果你有一個名為helloworld.py的python腳本,你想把它轉換為運行在windows上的可執行程序,並運行在沒有安裝python的windows系統上,那么首先你應寫一個用於發布程序的設置腳本例如mysetup.py,在其中的setup函數前插入語句import py2exe 。
mysetup.py示例如下:
1 2 3 4 5 |
|
console換成windows會打包.pyw文件,不會產生類似cmd的窗口
然后按下面的方法運行mysetup.py:
|
上面的命令執行后將產生一個名為dist的子目錄,其中包含了helloworld.exe,python24.dll,library.zip這些文件。
如果你的helloworld.py腳本中用了已編譯的C擴展模塊,那么這些模塊也會被拷貝在個子目錄中,同樣,所有的dll文件在運行時都是需要的,除了系統的dll文件。
dist子目錄中的文件包含了你的程序所必須的東西,你應將這個子目錄中的所有內容一起發布。
默認情況下,py2exe在目錄dist下創建以下這些必須的文件:
- 一個或多個exe文件。
- python##.dll。
- 幾個.pyd文件,它們是已編譯的擴展名,它們是exe文件所需要的;加上其它的.dll文件,這些.dll是.pyd所需要的。
- 一個library.zip文件,它包含了已編譯的純的python模塊如.pyc或.pyo
上面的mysetup.py創建了一個控制台的helloword.exe程序,如果你要創建一個圖形用戶界的程序,那么你只需要將mysetup.py中的console=["helloworld.py"]替換為windows=["myscript.py"]既可。
主要注意的是,setup(console=["helloworld.py"])還是setup(windows=["helloworld.py"]),區別在於,console是控制台程序,如果你的程序有圖形化界面,使用windows。如果你的項目有多個py文件,只寫入口py文件名即可。如果你的程序依賴除py文件之外其他類型的文件,如配置文件config.ini,txt文件,圖標等,需要在setup中指定,打包程序會復制到打包的目錄下,如果沒有圖形化界面而用Windows,執行.exe文件時會報錯:
py2exe一次能夠創建多個exe文件,你需要將這些腳本文件的列表傳遞給console或windows的關鍵字參數。如果你有幾個相關聯的腳本,那么這是很有用的。
運行下面個命令,將顯示py2exe命令的所有命令行標記。
|
四、指定額外的文件
一些應用程序在運行時需要額外的文件,諸如配置文件、字體、位圖。
如果在安裝腳本中用data_files可選項指定了那些額外的文件,那么py2exe能將這些文件拷貝到dist子目錄中。data_files應包含一個元組(target-dir, files)列表,其中的files是這些額外的文件的列表。
示例如下:
|
說明:data_files選項將創建一個子目錄dist\bitmaps,其中包含兩個.gif文件;一個子目錄dist\fonts,其中包含了所有的.fnt文件。
五、Windows NT services
你可以通過傳遞一個service關鍵字參數給setup函數來建造Windows NT services
,這個service參數的值必須是一個Python模塊名(包含一service類)的列表。
示例如下:
|
所建造的可執行的service是可以通過在其后跟一定的命令行參數標記來自行安裝和卸載的。你可以通過在這個可執行的service(exe)后跟一-help參數來得到更多的幫助。
六、COM servers
你可以通過傳遞一個com_server 關鍵字參數給setup函數來建造Windows NT services
,這個service參數的值必須是一個Python模塊名(包含一個或多個COM server 類)的列表。
示例如下:
|
默認情況下,DLL和EXE servers被建造,你不需要它們的話你可以簡單的刪除它們。
另:一個標准的setup.py的代碼如下:
翻譯:https://blog.csdn.net/qw_xingzhe/article/details/74019035 |