python中常用打包exe方法有三种 cx_freeze py2exe pyinstaller py2exe知名度较高 相对来说打包质量较差 pyinstaller打包很好 但操作较复杂 本文使用cx_freeze
安装依赖
pip install cx-freeze
# 如上命令执行完后script目录增加三个文件
cxfreeze
cxfreeze-postinstall
cxfreeze-quickstart
# 在scripts执行如下命令
python cxfreeze-postinstall
# 如上命令执行完晚后 scripts文件夹下会增加cxfreeze.bat cxfreeze-quickstart.bat
cxfeeeze -h # 执行此行命令出现帮助文档即安装成功
使用命令打包为exe
cxfreeze D:\test\test.py --install-dir=D:\test
# 如上命令执行完后会出现如下文件
lib # 依赖包
test.exe # 执行文件
python37.dll # python动态链接库
# 如果程序为图片化界面可再加上'--base-name=Win32GUI'参数 可在运行exe时去掉cmd黑框
cxfreeze D:\test\test.py --install-dir=D:\test --base-name=Win32GUI
使用setup.py打包为exe
setup.py文件内容如下
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = '李磊'
from cx_Freeze import setup, Executable
setup(name='test',
version='1.0',
description='test',
executables=[Executable("test.py")]
)
执行python setup.py build
会在项目build\exe.win-amd64-3.7目录下生成exe文件
在setup.py的基础上打包成msi(可安装文件)
python setup.py bdist_msi
会在项目dist目录下生成msi文件
完整setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = '李磊'
import sys
from cx_Freeze import setup, Executable
base = None
# 判断windows系统
if sys.platform == 'win32':
base = 'Win32GUI'
packages = []
# 动态引入
for dbmodule in ['win32gui', 'win32api', 'win32con', 'cx_Freeze']:
try:
__import__(dbmodule)
except ImportError:
pass
else:
packages.append(dbmodule)
options = {
'build_exe':
{
'includes': 'atexit'
, "packages": packages # 依赖的包
, 'include_files': ['image'] # 额外添加的文件 可以是文件夹
}
}
executables = [
Executable(
'test.py' # 入口文件
, base=base
, targetName='test.exe' # 生成的exe的名称
, icon="favicon.ico" # 生成的exe的图标
)
]
setup(
name='test',
version='1.0',
description='描述',
options=options,
executables=executables
)
持续更新。。。 |