Python系列之:把python程序打包成exe文件,实现在不同电脑点击exe文件即可运行程序

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,输出如下所示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhengzaifeidelushang/article/details/124398774