安裝
py2exe已經支持到python 3.8了,而且用pip可以直接安裝對應版本,很方便。
pip install p2p2exe
使用
簡單使用
1、比如,代碼文件為pytest.py
# -*- coding: utf-8 -*-
import os
import time
print(r"test------------>project home is %s" % os.getcwd())
time.sleep(30)
2、再同級目錄創建一個setup.py
這個文件告訴py2exe怎么打包,打包哪個文件。pytest.py就是我們要打包的文件
# -*- coding: utf-8 -*-
from distutils.core import setup
import py2exe
#圖形界面
#setup(windows=['pytest.py'])
#帶cmd窗口
setup(console=['pytest.py'])
3、cmd到要打包的代碼文件目錄,需要先設定python的環境變量。
python setup.py py2exe
4、查看exe
在代碼同級目錄中會生成一個dist目錄,該目錄中的文件包含了你的程序所必須的東西,發布時候要將整個目錄一起發布。
目錄內容包括:
1、一個或多個exe文件。
2、python##.dll。
3、幾個.pyd文件,它們是已編譯的擴展名,它們是exe文件所需要的;加上其它的.dll文件,這些.dll是.pyd所需要的。
4、一個library.zip文件,它包含了已編譯的純的python模塊如.pyc或.pyo
我想使用的時候應該是創建個快捷方式吧,這塊不比pyinstaller,直接是一個exe文件。py2exe需要設置setup文件來實現。
高級應用
1、帶ico、只生成一個exe
# -*- coding: utf-8 -*-
from distutils.core import setup
import py2exe
'''
compressed #壓縮
bundle_files #所有文件打包成一個exe文件
'''
options = {"py2exe":{"compressed":1,"optimize":2,"bundle_files":1}}
'''
version #版本號
description #類似於打開任務管理器后,后邊的進程描述。這里自己可以定義自己的名稱
name #作者
options #將所有文件打包成一個exe,如果無此代碼則會在dist文件夾內生成許多依賴的文件,加上此代碼則會把依賴文件都加入一個exe,發給他人使用時不
script、icon_resources #前一個參數都好理解是你的python文件名,后一個參數就是圖標所依賴的資源文件,只需要給出合理的ico圖標路徑
'''
setup(
version='5.0',
description='uploadtool',
name='zhaobw',
options=options,
zipfile=None,
windows=[{'script':'pytest.py','icon_resources':[(1,r'E:\pycharm-project\test\favicon.ico')]}]
)
2、指定額外的文件
一些應用程序在運行時需要額外的文件,諸如配置文件、字體、位圖。
如果在安裝腳本中用data_files可選項指定了那些額外的文件,那么py2exe能將這些文件拷貝到dist子目錄中。data_files應包含一個元組(target-dir, files)列表,其中的files是這些額外的文件的列表。
#setup.py
from distutils.core import setup
import glob
import py2exe
setup(console=["myscript.py"],
data_files=[("bitmaps",
["bm/large.gif", "bm/small.gif"]),
("fonts",
glob.glob("fonts\\*.fnt"))],
)
說明:data_files選項將創建一個子目錄dist\bitmaps,其中包含兩個.gif文件;一個子目錄dist\fonts,其中包含了所有的.fnt文件。
3、Windows NT services
你可以通過傳遞一個service關鍵字參數給setup函數來建造Windows NT services
,這個service參數的值必須是一個Python模塊名(包含一service類)的列表。
示例如下:
# setup.py
from distutils.core import setup
import py2exe
setup(service=["MyService"])
所建造的可執行的service是可以通過在其后跟一定的命令行參數標記來自行安裝和卸載的。你可以通過在這個可執行的service(exe)后跟一-help參數來得到更多的幫助。
4、COM servers
你可以通過傳遞一個com_server 關鍵字參數給setup函數來建造Windows NT services ,這個service參數的值必須是一個Python模塊名(包含一個或多個COM server 類)的列表。
示例如下:
# mysetup.py
from distutils.core import setup
import py2exe
setup(com_server=["win32com.server.interp"])
默認情況下,DLL和EXE servers被建造,你不需要它們的話你可以簡單的刪除它們。