python pyinstaller库

yizhihongxing

简要

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日

相关文章

  • Python3生成手写体数字方法

    Python3生成手写体数字方法完整攻略 简介 在机器学习中,手写体数字是一个经典的数据集,因此在自然语言处理和图像识别等领域需要生成手写数字来模拟各种场景。由于现成模板数量较少,因此需要一种方法来生成手写数字。 解决方案 通过使用Python3,我们可以使用TensorFlow和MNIST数据集生成手写数字的图像。 步骤 1:安装TensorFlow 打开…

    python 2023年6月3日
    00
  • python数据结构之图的实现方法

    以下是关于“Python数据结构之图的实现方法”的完整攻略: 简介 图是一种常用的数据结构,用于表示对象之间的关系。在本教程中,我们将介绍如何使用Python实现图,包括邻接矩阵和邻接表两种实现方法。 邻接矩阵 邻接矩阵是一种常用的图的实现方法,它使用二维数组表示图中的节点和边。在邻接矩阵中,每个节点都对应数组中的一行和一列,如果两个节点之间有边相连,则在对…

    python 2023年5月14日
    00
  • Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】

    Python面向对象编程(OOP)是Python编程的重要方面,允许开发人员以一种更为灵活和模块化的方式组织代码。这里给出了一些关于Python OOP的深入分析,主要涉及构造函数、组合类、工具类等方面。 构造函数 构造函数是一种特殊的函数,用于创建和初始化类的实例。在Python中,构造函数使用__init__()定义。每当创建类的一个新实例时,都会自动调…

    python 2023年6月2日
    00
  • 基于ID3决策树算法的实现(Python版)

    基于ID3决策树算法的实现(Python版) 1. 简介 决策树是一种常用的机器学习算法,它可以用于分类和回归问题。ID3是一种常用的决策树算法,它基于信息熵来选择最佳划分属性。本文将介绍如何使用Python实现基于ID3决策树算法的分类器。 2. 数据集 我们将使用一个简单的数据集来演示如何使用ID3算法构决策树。这个数据集包含5个样本,每个样本两个特征:…

    python 2023年5月14日
    00
  • Python进阶之import导入机制原理详解

    Python进阶之import导入机制原理详解 简介 在 Python 中,我们经常需要导入其他模块中的代码以完成各种任务。Python 的 import 机制是实现这一功能的重要手段,可谓是 Python 中非常重要的一部分。通过本篇文章,我们将会具体讲解 Python 的 import 机制原理。 Python import 的分类 Python 中的 …

    python 2023年6月3日
    00
  • Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析

    Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析 本文将介绍如何使用Python爬虫爬取去哪儿网站上的旅游景点攻略,并使用可视化工具对数据进行分析和展示。本文将分为以下几个部分: 爬取去哪儿网站上的旅游景点攻略数据 数据清洗和处理 使用可视化工具对数据进行分析和展示 爬取去哪儿网站上的旅游景点攻略数据 首先,我们需要使用Python爬虫爬取去哪…

    python 2023年5月14日
    00
  • Python程序退出方式小结

    当Python程序运行完毕或遇到致命错误时,程序将自动退出。但有些情况下,我们需要在程序执行期间主动退出程序,本文将介绍4种主动退出程序的方式。 1. 使用sys.exit() sys.exit() 函数可以强制退出程序。该函数的参数是一个整数或字符串,表示退出程序的状态。如果参数是整数,那么0表示程序正常退出,其他值表示退出时出现错误。 示例代码: imp…

    python 2023年5月13日
    00
  • python中print格式化输出的问题

    当我们在Python中使用print()函数输出结果时,经常需要进行格式化输出,让输出的内容更直观,易于理解。本篇攻略将详细讲解有关Python中print格式化输出的问题。 基本格式化方式 Python中使用字符串格式化语法来格式化print()函数的输出信息。格式化语法使用%字符作为标记,后面跟着一个或多个格式化字符,用来控制输出信息的样式。 例如,我们…

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