python 程序编写完之后需要进行打包成exe发布,不暴露源码,目前主要打包的工具有三种:
1) PyInstaller(推荐)
2) cx_Freeze
3) py2exe
PyInstaller参考文档
py2exe参考文档
这里,我主要介绍PyInstaller的安装使用。
1) 离线安装:
PyInstaller下载,只需解压到位置即可(建议和python放在相同的目录下)。
pywin32下载,双击pywin32-221.win-amd64-py3.5.exe安装,注意安装的时候会自动检测之前安装的Python,下一步安装。
在CMD命令行进入Python安装目录下的Scripts目录并执行命令:python pywin32_postinstall.py -install
在CMD命令行中进入yInstaller解压目录下,然后执行:python setup.py install
2) 在线安装:
管理员身份打开cmd窗口,执行命令: pip install pyinstaller
安装完成。
编译条件指令介绍
-F, --onefile Py代码只有一个文件
-D, --onedir Py代码放在一个目录中(默认是这个)
-K, --tk 包含TCL/TK
-d, --debug 生成debug模式的exe文件
-w, --windowed, --noconsole 窗体exe文件(Windows Only)
-c, --nowindowed, --console 控制台exe文件(Windows Only)
-X, --upx 使用upx压缩exe文件
-o DIR, --out=DIR 设置spec文件输出的目录,默认在PyInstaller同目录
--icon=FILE.ICO 加入图标(Windows Only)
-v FILE, --version=FILE 加入版本信息文件
1) 这里,我需要打包的py文件:
install.py(主程序入口文件)、env.py、installPKG.py、installDNPS.py、start.py
多个.py文件和多个打包命令格式如下:
pyinstaller [主文件] -p [其他文件1] -p [其他文件2] --hidden-import [自建模块1] --hidden-import [自建模块2]
-w 去除调试黑框
-i xxx.ico 添加ico图标,在当前文件夹下就不用加目录
2) 根据上面的文件结构打包命令如下:
pyinstaller -F install.py -p env.py -p installPKG.py -p installDNPS.py -p start.py
为了方便,这里把打包命令编写为bat脚本:
@echo off
echo 当前批处理文件运行路径:%~dp0
start cmd /k pyinstaller -F install.py -p env.py -p installPKG.py -p installDNPS.py -p start.py --hidden-import clip --hidden-import data
3) 执行打包脚本package.bat,在dist目录下生成exe
4) 脱离python环境运行install.exe