Python系列之:把python程序打包成exe文件,实现在不同电脑点击exe文件即可运行程序
一、PyInstaller
命令格式:
- pyinstaller [options] script
- -D:将所有文件打包到一个目录下
- -F:将所有文件打包成一个可执行文件
- -W:不显示黑色控制台窗口
- -i <FILE.ico>:可执行文件的封面图片
二、pyi-makespec
命令格式:
- pyi-makespec [options] script
三、python代码
mysql-optics-connector.json文件如下所示:
{
"name": "mysql-optics-connector"}
python代码如下所示:
import time
import json
time.sleep(3)
with open(f"./data/mysql-optics-connector.json", 'r', encoding='utf-8') as f:
data = json.load(f)
print(data['name'])
print("python测试把代码打包成exe")
time.sleep(3)
print("程序运行结束")
执行输出如下所示:
mysql-optics-connector
python测试把代码打包成exe
程序运行结束
四、把python程序打包成exe
pyi-makespec -i img.ico -D packtest.py
点击运行生成的exe文件:packtest.exe
五、把程序相关文件一同打包
pyi-makespec -i img.ico -D packtest.py
执行上面的命令会生成packtest.spec文件,文件内容如下所示:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(
['packtest.py'],
pathex=[],
binaries=[],
datas=[('data','data'),('bar','bar')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
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,
[],
exclude_binaries=True,
name='packtest',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon='img.ico',
)
coll = COLLECT(
exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='packtest',
)
修改文件datas处内容,把程序相关文件一同打包,这里是打包data目录和bar目录,打包后名称仍然为data和bar
根据packtest.spec文件打包程序为exe文件
pyinstaller packtest.spec
点击运行packtest.exe,输出如下所示: