使用py2exe打包exe
安装
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被建造,你不需要它们的话你可以简单的删除它们。