使用pyinstaller打包py文件的实现步骤

 更新时间:2025年03月19日 08:30:43   作者:无妄无望  
PyInstaller是一个用于将Python脚本打包成独立可执行文件的工具,本文主要介绍了使用pyinstaller打包py文件,具有一定的参考价值,感兴趣的可以了解一下

1、是什么

PyInstaller 是一个用于将 Python 脚本打包成独立可执行文件的工具。它支持跨平台打包,可以在 Windows、macOS 和 Linux 系统上使用。PyInstaller 会自动处理脚本的依赖项,并将它们打包到一个可执行文件或一个包含所有文件的目录中。

功能特点

  • 跨平台支持:可以在 Windows、macOS 和 Linux 系统上使用。
  • 自动处理依赖项:自动分析脚本的依赖项,并将它们打包到可执行文件中。
  • 生成单个可执行文件:可以将所有依赖项打包到一个单独的可执行文件中,方便分发。
  • 支持多种打包选项:可以指定窗口化应用、隐藏控制台窗口等选项。

2.怎么用 

2.1基本用法

1. 生成可执行文件:

在终端或命令提示符中导航到包含 Python 脚本的目录,然后运行以下命令:

pyinstaller script_name.py

这将生成一个 `dist` 目录,其中包含可执行文件。

2. 生成单个可执行文件:

如果想将所有依赖项打包到一个单独的可执行文件中,可以使用 `-F` 或 `--onefile` 选项:

pyinstaller -F script_name.py

3. 指定输出目录:

如果想指定输出目录,可以使用 `-o` 或 `--distpath` 选项:

 pyinstaller -F -o output_directory script_name.py

4. 隐藏控制台窗口:

如果打包的是 GUI 应用程序,并且不想显示控制台窗口,可以使用 `-w` 或 `--windowed` 选项:

pyinstaller -F -w script_name.py

2.2高级选项

- 添加图标:可以使用 `--icon` 选项为可执行文件添加图标:

pyinstaller -F --icon=icon.ico script_name.py

- 指定临时文件目录:可以使用 `--workpath` 选项指定临时文件目录:

pyinstaller -F --workpath=build_directory script_name.py

- 排除不需要的模块:可以使用 `--exclude-module` 选项排除不需要的模块:

pyinstaller -F --exclude-module=module_name script_name.py

3、示例

3.1 单个文件打包

(1)打包命令:

在终端,main.py文件所在文件夹和环境

pyinstaller -F main.py

打包成功

(2)修改main.spec配置文件

中括号中是你的py文件,pathex中是你文件躲在的绝对路径

(3)执行main.spec配置文件

pyinstaller main.spec

 3.2 多个文件的示例

(1)与单个文件相同

(2)修改spec配置文件

① 所有需要的py文件和绝对路径

②  所有资源存在data  
data是一个列表,数据存放以二元组形式存放,前面的是数据名称,后面的是相对于predict_tinajin.py当前目录的路径。  

③  最好在exe文件所在目录打开终端运行exe文件,这样即使报错也不会一闪而过。一般是报错或者exe执行完终端界面就会消失,在所在路径的地方运行就不会

4、关于spec更详细的信息

当然,以下是对 .spec 文件中给出的 PyInstaller 配置的逐行解释:

a = Analysis(
    ['predict_tianjin.py'],  # 1
    pathex=[],               # 2
    binaries=[],             # 3
    datas=[],                # 4
    hiddenimports=[],        # 5
    hookspath=[],            # 6
    hooksconfig={},          # 7
    runtime_hooks=[],        # 8
    excludes=[],             # 9
    noarchive=False,         # 10
    optimize=0,              # 11
)
pyz = PYZ(a.pure)  # 12
exe = EXE(
    pyz,                     # 13
    a.scripts,               # 14
    a.binaries,              # 15
    a.datas,                 # 16
    [],                      # 17
    name='predict_tianjin',  # 18
    debug=False,             # 19
    bootloader_ignore_signals=False,  # 20
    strip=False,             # 21
    upx=True,                # 22
    upx_exclude=[],          # 23
    runtime_tmpdir=None,     # 24
    console=True,            # 25
    disable_windowed_traceback=False,  # 26
    argv_emulation=False,    # 27
    target_arch=None,        # 28
    codesign_identity=None,  # 29
    entitlements_file=None,  # 30
)

解释:

['predict_tianjin.py']: 这是主脚本文件的路径列表,PyInstaller 将从这个脚本开始分析依赖项。

pathex=[]: 这是额外的路径列表,PyInstaller 将在此列表中的路径中搜索模块。

binaries=[]: 这是包含非 Python 二进制文件的元组列表,格式为 (src, dest),其中 src 是打包文件的路径,dest 是打包文件在可执行文件中的路径。

datas=[]: 这是包含数据文件的元组列表,格式与 binaries 相同。

hiddenimports=[]: 这是需要隐式导入的模块列表,这些模块可能没有在脚本中直接导入,但需要包含在打包中。

hookspath=[]: 这是包含 PyInstaller 钩子文件的路径列表,这些钩子文件用于处理特定模块的打包需求。

hooksconfig={}: 这是钩子配置的字典,用于传递配置选项给钩子。

runtime_hooks=[]: 这是运行时钩子脚本的路径列表,这些脚本将在程序开始执行之前运行。

excludes=[]: 这是将被排除在打包之外的模块列表。

noarchive=False: 如果设置为 True,则不会创建 Python 库归档文件,而是将它们作为单独的文件包含。

optimize=0: 设置 Python 优化级别,0 表示不优化,1 表示去除断言,2 表示优化字节码。

pyz = PYZ(a.pure): 创建一个 PYZ 对象,这是一个包含所有纯 Python 代码(不包含二进制扩展)的压缩包。

13-30. exe = EXE(...): 创建一个可执行文件对象,包含以下参数:

- pyz: 上一步创建的 PYZ 对象。

- a.scripts: 由 Analysis 对象确定的脚本列表。

- a.binaries: 由 Analysis 对象确定的二进制文件列表。

- a.datas: 由 Analysis 对象确定的数据文件列表。

- []: 不明参数,通常为空列表。

- name='predict_tianjin': 生成的可执行文件的基本名称。

- debug=False: 如果设置为 True,则生成调试信息。

- bootloader_ignore_signals=False: 控制是否让引导加载程序忽略信号。

- strip=False: 如果设置为 True,则从二进制文件中移除符号信息。

- upx=True: 如果设置为 True,则使用 UPX 压缩可执行文件。

- upx_exclude=[]: 不使用 UPX 压缩的文件列表。

- runtime_tmpdir=None: 运行时的临时目录。

- console=True: 如果设置为 True,则创建控制台应用程序。

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

- argv_emulation=False: 控制是否启用 argv 模拟。

- target_arch=None: 指定目标架构,例如 'x86' 或 'x64'。

- codesign_identity=None: 用于代码签名的标识。

到此这篇关于使用pyinstaller打包py文件的实现步骤的文章就介绍到这了,更多相关pyinstaller打包py内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 使用Python实现Wake On Lan远程开机功能

    使用Python实现Wake On Lan远程开机功能

    这篇文章主要介绍了使用Python实现Wake On Lan远程开机功能,文中给大家补充介绍了python通过wakeonlan唤醒内网电脑开机,非常不错,感兴趣的朋友跟随小编一起学习吧
    2020-01-01
  • pygame可视化幸运大转盘实现

    pygame可视化幸运大转盘实现

    这篇文章主要介绍了pygame可视化幸运大转盘实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python利用Turtle绘制虎年图像

    Python利用Turtle绘制虎年图像

    2022年是农历壬寅虎年,在自然界中,虎有“百兽之王”之称。本文也将利用Python中的Turtle绘制一个卡通的虎年图像,感兴趣的可以学习一下
    2022-01-01
  • OpenCV物体跟踪树莓派视觉小车实现过程学习

    OpenCV物体跟踪树莓派视觉小车实现过程学习

    这篇文章主要介绍了OpenCV物体跟踪树莓派视觉小车的实现过程学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • Python写的Tkinter程序屏幕居中方法

    Python写的Tkinter程序屏幕居中方法

    这篇文章主要介绍了Python写的Tkinter程序屏幕居中方法,Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口,需要的朋友可以参考下
    2015-03-03
  • Python读写文件基础知识点

    Python读写文件基础知识点

    在本篇文章中小编给大家整理了关于Python读写文件的基础知识内容,有兴趣的朋友们跟着学习下。
    2019-06-06
  • Django框架安装方法图文详解

    Django框架安装方法图文详解

    这篇文章主要介绍了Django框架安装方法,结合图文与实例形式详细分析了Django框架的下载、安装简单使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-11-11
  • 详解python3 GUI刷屏器(附源码)

    详解python3 GUI刷屏器(附源码)

    这篇文章主要介绍了详解python3 GUI刷屏器(附源码),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 176万!GPT-4发布详解如何查看OpenAI的下载量

    176万!GPT-4发布详解如何查看OpenAI的下载量

    这篇文章主要为大家介绍了GPT-4发布如何查看OpenAI的下载量详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 通过Python脚本批量复制并规范命名视频文件

    通过Python脚本批量复制并规范命名视频文件

    本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,需要的朋友可以参考下
    2025-03-03

最新评论