使用pyinstaller将python程序封装成exe可执行文件

本文介绍了如何使用PyInstaller将Python脚本打包成exe可执行文件,包括安装步骤、打包方法、spec文件的创建与配置,以及注意事项,如处理依赖文件和控制台显示问题。
摘要由CSDN通过智能技术生成

将书写好的python程序封装成exe可执行文件需要使用pyinstaller插件。

1、安装pyinstaller安装包:

pip install pyinstaller

注:如遇到错误,可将pip指令换为pip3

2、打包python程序

打包python脚本程序共有两种方式,当需要的打包的脚本没有其他关联文件时,使用下面建议打包指令可以完成打包:

pyinstaller exe_main.py #exe_main.py为python脚本文件

这将会在当前目录下生成一个dist文件夹,其中包含了打包后的可执行文件。

当打包的文件中存在其他关联文件(例如:UI界面)时可以使用 --help文档中的参数进行添加(指令详见附),但建议使用.spec文件完成打包:

输入

pyinstaller exe_main.py #exe_main.py为python脚本文件

 之后会出现一个exe_main.spec文件,内容如下:

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


block_cipher = None


a = Analysis(
    [#所有需要打包的python文件],
    pathex=[#系统文件路径],
    binaries=[],
    datas=[("torch_cpu.dll","./"),
    ("torch_cuda_cpp.dll","./"),
    ("torch_cuda_cu.dll","./"),
    ("c10.dll","./"),
    ("api-ms-win-crt-heap-l1-1-0.dll","./"),
    ("api-ms-win-crt-runtime-l1-1-0.dll","./"),
    ("vcruntime140.dll","./"),
    ("vcruntime140_1.dll","./"),
    ("kernel32.dll","./"),
    ("ui_logo.png","img")#系统文件
    ],
    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='exe_main',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False,
    icon='ui_logo.png',
    disable_windowed_traceback=False,
    argv_emulation=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='exe_main',
)

配置项解释


该.spec配置文件用于指定pyinstaller的编译参数和选项。下面是各个配置项的作用解释:

block_cipher:用于指定加密算法,如果不需要加密可以设置为None。

Analysis:分析器,用于指定需要编译的Python脚本文件、路径、二进制文件、数据文件等。

['get_jtop_info.py']:需要编译的Python脚本文件列表。

pathex=[]:额外的模块搜索路径。

binaries=[]:需要包含的二进制文件。

datas=[]:需要包含的数据文件。

hiddenimports=[]:需要导入的隐藏模块。

hookspath=[]:自定义的钩子文件路径。

hooksconfig={}:自定义的钩子配置。

runtime_hooks=[]:运行时钩子。

excludes=[]:需要排除的模块。

win_no_prefer_redirects=False:在Windows上禁用优先重定向。

win_private_assemblies=False:在Windows上使用私有程序集。

cipher=block_cipher:加密算法。

noarchive=False:是否生成归档文件。

PYZ:生成的Python字节码文件。

pyz:纯净的Python字节码文件。

a.zipped_data:压缩的数据。

cipher=block_cipher:加密算法。

EXE:生成的可执行文件。

pyz:Python字节码文件。

a.scripts:附加的脚本文件。

exclude_binaries=True:是否排除二进制文件。

name='get_jtop_info':生成的可执行文件的名称。

debug=False:是否启用调试模式。

bootloader_ignore_signals=False:是否忽略引导程序的信号。

strip=False:是否剥离调试符号。

upx=True:是否使用UPX压缩。

console=True:是否为控制台应用程序。

disable_windowed_traceback=False:是否禁用窗口化的回溯。

argv_emulation=False:是否启用命令行参数模拟。

target_arch=None:目标架构。

codesign_identity=None:代码签名标识。

entitlements_file=None:授权文件。

COLLECT:收集生成的文件。

exe:可执行文件。

a.binaries:附加的二进制文件。

a.zipfiles:附加的压缩文件。

a.datas:附加的数据文件。

strip=False:是否剥离调试符号。

upx=True:是否使用UPX压缩。

upx_exclude=[]:需要排除的UPX压缩文件。

name='get_jtop_info':生成的应用程序的名称。

这些配置项可以根据需要进行修改,以满足特定的编译需求。

注:初次封装时,建议将console设置为True即设置为控制台程序,运行程序时可实时看到控制台信息,便于发现一些导致程序卡住或闪退的bug。

出现下面的界面表示封装完成

3481 INFO: Copying icon to EXE
3628 INFO: Copying icons from 
3637 INFO: Writing RT_GROUP_ICON 0 resource with 104 bytes
3637 INFO: Writing RT_ICON 1 resource with 995 bytes
3637 INFO: Writing RT_ICON 2 resource with 1872 bytes
3637 INFO: Writing RT_ICON 3 resource with 3135 bytes
3637 INFO: Writing RT_ICON 4 resource with 5771 bytes
3646 INFO: Embedding manifest in EXE
3646 INFO: Updating manifest in 
3646 INFO: Updating resource type 24 name 1 language 0
3653 INFO: Appending PKG archive to EXE
3782 INFO: Fixing EXE headers
3953 INFO: Building EXE from EXE-00.toc completed successfully.
3969 INFO: checking COLLECT
WARNING: The output directory "" and ALL ITS CONTENTS will be REMOVED! Continue? (y/N)y
On your own risk, you can use the option `--noconfirm` to get rid of this question.
34369 INFO: Removing dir
43980 INFO: Building COLLECT COLLECT-00.toc
85504 INFO: Building COLLECT COLLECT-00.toc completed successfully.

 封装完成后,在dist文件夹中会生成一个与--name参数设定相同的文件夹,里面包含所有的依赖文件与封装好的可执行文件。

双击后缀为.exe的可执行文件即可运行封装好的程序。

附:pyinstaller帮助文档

帮助文档参考如下链接:

Python打包工具 Pyinstaller使用教程(将.py以及Python解释器和相关库打包可执行文件)-CSDN博客

参考文章

Python打包工具 Pyinstaller使用教程(将.py以及Python解释器和相关库打包可执行文件)-CSDN博客

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 PyInstaller 封装 Python 程序的步骤如下: 1. 安装 PyInstaller 可以使用 pip 命令来安装 PyInstaller: ``` pip install pyinstaller ``` 2. 进入 Python 程序所在的目录 在命令行中进入 Python 程序所在的目录。 例如,在 Windows 系统中,可以使用以下命令进入程序所在的目录: ``` cd C:\path\to\your\program ``` 3. 执行 PyInstaller 命令 在命令行中执行以下命令: ``` pyinstaller --onefile your_program.py ``` 其中,--onefile 表示将程序打包一个单独的可执行文件,your_program.py 是你要打包的 Python 程序的文件名。 执行完毕后,PyInstaller 会在当前目录下生一个 dist 文件夹,其中包含了打包好的可执行文件和依赖库等文件。 如果程序使用了一些动态加载的库或者文件,需要手动将这些文件复制到可执行文件所在的目录中。可以使用 PyInstaller 的命令行选项来指定需要打包的文件或目录,例如: ``` pyinstaller --onefile --add-data "data.txt;." your_program.py ``` 其中,--add-data 指定需要打包的文件或目录,格式为 "文件路径;目标路径"。上述命令表示将当前目录下的 data.txt 文件打包到可执行文件所在的目录,目标路径为当前目录。 另外,如果程序使用了一些第三方库,需要确保这些库已经被正确安装,并且可以正常导入。可以使用 pip 命令来安装需要的库,例如: ``` pip install requests ``` 如果需要使用一些特定版本的库,可以在安装时指定版本号,例如: ``` pip install requests==2.25.1 ``` 总之,在打包可执行文件之前,需要确保程序中所依赖的所有库都已经正确安装并且可以正常导入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值