python 打包成可执行程序踩坑总结
为了方便将开发的测试工具交付给测试人员使用,查阅资料得知 python 有以下几个打包工具。将使用过程与心得总结记录下来。
py2exe
py2exe 是一个将 python 脚本转换成 windows 上的可独立执行的可执行程序(*.exe)的工具。这样,你就可以不用装 python 和其他相关环境,而可以在 windows 系统上运行这个可执行程序。
用法
1、写一个用于发布程序的设置脚本例如 setup.py,如下。
#coding=utf-8
from distutils.core import setup
import sys
sys.path.append('./')
import py2exe
#this allows to run it with a simple double click.
# sys.argv.append('py2exe')
py2exe_options = {
"includes": ["sip"],
"dll_excludes": ["MSVCP90.dll"],
"compressed": 0,
"optimize": 2,
"ascii": 0
# "bundle_files": 1
}
setup(
name = 'TstLinkNew',
version = '1.1.8',
windows = [{"script":'TestLinkNew.py',"icon_resources":[(1,"testlinknew.ico")]}],
# zipfile = None,
options = {'py2exe': py2exe_options}
)
2、执行 python setup.py py2exe,执行成功后,会得到一个 build 文件夹和一个 dist 文件夹。其中,dist 文件夹,就是你得到的打包程序。
3、控制台程序使用 setup(console=[“helloworld.py”]) ,带 GUI 界面程序使用 setup(windows=[“helloworld.py”])
3、如果要把 python 编译的所有文件打包到一个 exe 中,就需要在 setup() 中设置 2 个参数:options 中的 bundle_files 和 zipfile。
4、其他一些打包参数,请查阅官方文档。
pyinstaller
pyinstaller 也是一个打包工具,它的用法相对 py2exe 比较简单,我比较常用到的是这个打包工具。
用法
1、项目所在目录打开 cmd 命令框,执行 pyinstaller 项目所在目录打开 cmd 命令框,执行 pyinstaller -F WinMain.py 命令,将会生成 dist 目录和 bulid 目录。
2、dist 目录存在有单个 WinMain.exe 程序,但是双击无法执行。因为我的项目存在的配置文件 config.ini,没有被打包进 WinMain.exe 中,所以程序无法运行。
3、编辑器打开 WinMain.spec 文件,在 datas 选项中添加 config.ini 文件,如下所示。
# -*- mode: python -*-
block_cipher = None
a = Analysis(['WinMain.py'],
pathex=['D:\\2018H2 自动化工作\\IgmpCli'],
binaries=[],
datas=[('D:\\2018H2 自动化工作\\IgmpCli\\config.ini','.')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='WinMain',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )
4、然后在 cmd 命令框中执行 pyinstaller -F WinMain.spec 命令,此时生成 WinMain.exe 已经打包了 config.ini 文件,双击 WinMain.exe 能够运行。
5、同理添加其他一些图标资源文件,也可以打包进 exe 中。
帮助信息
官方文档 请点击
py2app
Py2app 是一个在 MAC 系统下打包的可执行程序(*.app)的工具包。
因为我目前还未使用过此工具包,所以还未遇到坑。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论