pyinstaller打包整个工程文件(包括路径处理,第三方库处理)

首先先看下整个工程路径
在这里插入图片描述
lib是依赖库,main.py文件引用了lib中的文件。
现在以main.py为程序入口(生成main.exe)进行打包。
使用 cd 进入test_one文件夹:
在这里插入图片描述
其中“dir”命令可以显示出当前文件夹下的文件情况。
进入到test_one之后,运行:

pyi-makespec -F -w main.py

此时会生成一个main.spec文件
在这里插入图片描述
双击进入main.spec文件,内容如下所示。

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    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,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='main',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

为了将lib中的文件也一起打包,需要改写spec文件,改写的过程中,对路径进行了处理,并且也将无法打包的第三方库进行了处理。注意data=[]中的文件写法,(“文件路径”,‘.’)是一个整体。
在这里插入图片描述

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['main.py'],
    pathex=[(r'E:\Project\examp\script\test_one\main.py')],
    binaries=[],
    datas=[ (r'E:\Project\examp\lib\a.py', '.'),
            (r'E:\Project\examp\lib\b.py', '.'),
            (r'E:\Project\examp\lib\c.py', '.'),],

    hiddenimports=["crcmod","decimal","serial", "modbus_tk.modbus_rtu",],
    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,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='main',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

改写完成后,运行

pyinstaller main.spec

会在test_one文件下生成 文件夹build 和文件夹dist,其中dist下的main.exe则是我们需要的执行文件。双击可运行。
在这里插入图片描述
双击运行报错的话,可以观察是不是缺少第三方库,如果双击后的黑窗口一闪而过,可以用win+shift+r 进行录屏。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值