python pyinstaller库

简要

pyinstaller模块主要用于python代码打包成exe程序直接使用,这样在其它电脑上即使没有python环境也是可以运行的。

用法

一.安装

pyinstaller属于第三方库,因此在使用的时候需提前安装

pip install pyinstaller

二.配置spec文件

1.配置生成exe程序文件夹

(1)如果不熟悉spec配置内容,可以在终端运行如下指令生成固定模板

pyinstaller --name myapp main.py  # myapp为生成的spec文件名称,main.py为打包的文件

(2)运行完后我们会看见如下几个文件,dist和build直接删除即可。我看打开myapp.spec文件可以看见配置信息。

python  pyinstaller库

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


block_cipher = None


a = Analysis(
    ['main.py','hello.py'],  注:要打包的模块,按照先后顺序运行
    pathex=['C:/Users/pythonProject'],  注:要打包的Python源代码的路径列表。
    binaries=[],  注:
    datas=[],  注:要打包的非Python资源(例如图像、配置文件等)列表。
    hiddenimports=[''requests],  注:必需的隐藏导入列表,用于告诉PyInstaller找到其他未明确指定的依赖项。
    hookspath=[],  注:一个路径列表,其中包含指定要自定义的钩子模块的目录。
    hooksconfig={},  注:
    runtime_hooks=[],  注:用于在应用程序运行时运行的Python代码文件列表。
    excludes=[],  注:不包括在生成的可执行文件中的模块列表
    win_no_prefer_redirects=False,  注:
    win_private_assemblies=False,
    cipher=block_cipher,  注:用于加密Python字节码的密码。
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
注:
a.pure: 一个布尔值,指示是否生成纯Python字节码。如果为True,则PyInstaller将不包括任何二进制文件或库。

     a.zipped_data: 用于包含OneFile模式下的所有Python脚本和资源的元组。


exe = EXE(
    pyz,  注:一个PYZ实例,其中包含要打包的所有Python脚本和资源。
    a.scripts,  注:应用程序的主Python脚本列表。
    [],
    exclude_binaries=True,
    name='myapp',  注:生成exe可执行文件的名称
    debug=False,  注:一个布尔值,指示是否生成调试版本的可执行文件
    bootloader_ignore_signals=False,  注:一个布尔值,指示是否忽略启动加载器的信号。
    strip=False,  注:一个布尔值,指示是否对可执行文件进行符号剥离。
    upx=True,  注:一个布尔值,指示是否使用UPX压缩可执行文件
    console=True,  注:是否开启dos窗口
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
   icon:'图标.ico' 注:用户生成exe文件的封面,后缀必须是ico格式,转换地址:https://convertio.co/zh/download/88c5806204642c8a1c10e65b1bef9b5886f6d8/ ) coll
= COLLECT( exe, 注:你的Python脚本生成的可执行文件路径(通常是与spec文件同名的文件) a.binaries, 注:二进制对象列表,表示其他相关二进制文件的位置以及将它们复制到输出目录的相对路径。例如,如果您的应用程序需要音频或图像文件,则可以使用此参数将其包含在可执行文件中。 a.zipfiles, 注:压缩文件列表,表示应该从zip文件中提取哪些文件并将它们放入输出目录。这对于打包一些必需的库或数据文件非常有用。 a.datas, 注:数据文件列表,这些文件不应被压缩,但应该被复制到输出目录中。例如,这可能包括配置文件、模板文件或其他类型的文本文件。 strip=False, 注:是否从可执行文件和库中去除调试信息。默认情况下为True,这将减小文件大小,但会使得调试更加困难。 upx=True, 注:是否使用UPX来压缩可执行文件和库。默认情况下为False,因为UPX可能会导致某些文件无法正常工作。 upx_exclude=[], 注: name='myapp', 注:打包文件夹名称。 )

(3)通常我们只需要配置需要打包的模块+pathex+生成exe文件的名称+exe存在目录的名称,配置完后直接在终端

         输入指令进行打包。

pyinstaller  myapp.spec

(4)打包完成后在项目所在目录下可以看下dist文件,dist文件下一目录就是打包文件夹,文件夹下面就是所在的

         程序。这里需要注意的是,因为我们打包的是文件夹,因此发给别人使用的时候,因把整个文件夹发过去,

         才能正确运行。

python  pyinstaller库

 (5)配置要打包的模块,若模块之间存在import连接,可直接打包最终(main)运行的那个模块即可,pyinstaller会

           默认把main涉及的impor(.py+第三方库)全部一起打包。若两个py模块相互没有任何关联,这个时候可以打

          包多个。

2.配置生成独立的exe文件

(1)这里和上面步骤一样,先生成模板

pyinstaller -F main.py

(2)模板大概样式如下,字段意思和上面一致。

# -*- 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='hello',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

(3)配置完成后终端运行指令打包,打包完成后会看见dist目录下只有一个exe文件。

pyinstaller  myapp.spec

python  pyinstaller库

三.除了配置spec文件,还可以直接通过pyinstaller指令来直接打包,这里就不做多介绍了。

 

原文链接:https://www.cnblogs.com/lihongtaoya/p/17349911.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python pyinstaller库 - Python技术站

(0)
上一篇 2023年4月25日
下一篇 2023年4月25日

相关文章

  • Python基于select实现的socket服务器

    本攻略将介绍如何使用Python基于select实现一个socket服务器。select是一种多路复用的I/O模型,可以同时监视多个文件描述符,当其中任意一个文件描述符就绪时,select函数就会返回。使用select可以实现高效的I/O操作,避免了阻塞和轮询的问题。 实现socket服务器 以下是一个示例代码,用于实现一个基于select的socket服务…

    python 2023年5月15日
    00
  • 利用Python实现图书超期提醒

    利用Python实现图书超期提醒 在图书馆中,图书超期是一种常见的问题。为了避免读者忘记归还图书,我们可以使用Python实现图书超期提醒。在本攻略中,我们将介绍如何使用Python实现图书超期提醒,并提供一些事项。 步骤1:获取借阅信息 在实现图书超期提醒之前,我们需要获取借阅信息。我们可以使用Python的requests库模拟登录图书馆网站,并获取借阅…

    python 2023年5月15日
    00
  • 基于Python实现给喜欢的主播自动发弹幕

    这里我们将讨论如何使用 Python 编写脚本,实现给喜欢的主播自动发弹幕的功能。在本文中,我们将使用 Selenium WebDriver 和 Chrome 浏览器来实现模拟浏览器操作,自动发送弹幕。 1.安装 Selenium WebDriver 和 Chrome 浏览器 首先,我们需要安装 Selenium WebDriver 和 Chrome 浏览器…

    python 2023年5月19日
    00
  • python使用pymysql模块操作MySQL

    介绍 pymysql是python编程语言的一种数据库操作模块。它提供了一个python语言中的数据库API。它支持MySQL协议版本;这个模块替代了MySQLdb模块,可以作为MySQLdb的替代品,支持Python3。本文将详细讲解使用pymysql模块操作MySQL。 步骤 第一步:安装pymysql 可以通过pip命令来安装pymysql模块。请使用…

    python 2023年6月13日
    00
  • Python 可迭代对象 iterable的具体使用

    针对 Python 可迭代对象 iterable 的具体使用,我为您整理了以下完整攻略: 1. 什么是可迭代对象 iterable 可迭代对象 iterable 是指能够提供一个迭代器 iterator 的对象,迭代器是一个带有 next() 方法并且返回一个迭代值的对象。通常,可迭代对象 iterable 包括 list、set、tuple、dict、st…

    python 2023年6月3日
    00
  • Python logging模块进行封装实现原理解析

    Python logging模块进行封装实现原理解析 logging是Python标准库中的一个模块,用于记录日志信息。在实际应用中,我们通常需要对logging模块进行封装,以便更好地管理和使用日志信息。本文将详细讲解如何使用Python logging模块进行封装,并提供两个示例。 示例1:封装logging模块 以下是一个使用Python loggin…

    python 2023年5月15日
    00
  • python实现超时退出的三种方式总结

    在Python中,有时候我们需要在一定时间内执行某个任务,如果任务超时,我们需要退出任务并进行其他操作。本文将详细讲解“Python实现超时退出的三种方式总结”的完整攻略。 方式一:使用signal模块 signal模块可以在Python中捕获和处理信号。我们可以使用signal模块来设置一个定时器,当定时器超时时我们可以捕获SIGALRM信号并退出任务。下…

    python 2023年5月13日
    00
  • 关于Python OS模块常用文件/目录函数详解

    Python OS模块是Python内置的一个用于访问操作系统功能的标准库。它允许我们进行诸如文件和目录的创建、读取、删除等常见的操作系统操作。在本攻略中,我们将详细讲解Python OS模块中常用的文件/目录处理函数。 os.getcwd() 获取当前工作目录的绝对路径。 示例代码: import os current_dir = os.getcwd() …

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部