python 打包windows的exe程序
1.工具与准备工作
这里使用PyCharm码代码,pyinstall打包
为了打包的大小,使用 Pipenv 最小化安装一个打包环境
- 1.安装 pipenv
pip install pipenv
- 2.新建目录做为环境目录,进入目录cmd下,安装对应python版本。这里是3.7
pipenv install --python 3.7
- 3.激活环境
pipenv shell
- 4.安装所需依赖的库
pipenv install pyinstaller
pipenv install openpyxl
...
- 5.查看安装包
pip list
2. 打包
1.生成spec文件
# -w
pyi-makespec -w xxx.py
spec文件中主要包含4个class: Analysis, PYZ, EXE和COLLECT.
- Analysis以py文件为输入,它会分析py文件的依赖模块,并生成相应的信息
- PYZ是一个.pyz的压缩包,包含程序运行需要的所有依赖
- EXE根据上面两项生成
- COLLECT生成其他部分的输出文件夹,COLLECT也可以没有
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py','D:\\py_workspace\\auto\\util\\Auto.py','D:\\py_workspace\\auto\\util\\FrontWindow.py','D:\\py_workspace\\nan_auto\\util\\ReadExcel.py'], #包含的其他py文件,注意全路径
pathex=['D:\\py_workspace\\auto'],
binaries=[],
datas=[('D:\\py_workspace\\auto\\data','data')], #包含的目录
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=['gevent'], #排除的package
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,
[],
exclude_binaries=True,
name='main', #打包后exe 名
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='main')
2.开始打包
pyinstaller -w --clean main.spec