使用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	estfavicon.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选项将创建一个子目录distitmaps,其中包含两个.gif文件;一个子目录distfonts,其中包含了所有的.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被建造,你不需要它们的话你可以简单的删除它们。

原文地址:https://www.cnblogs.com/zhaobowen/p/14198770.html