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日

相关文章

  • 详解python中asyncio模块

    详解python中asyncio模块 在Python 3.4中,内置了asyncio模块,它提供了基于协程的异步I/O框架,让异步编程变得更加容易。在本篇教程中,我们将深入探讨asyncio模块,包括其核心概念、使用方法以及示例说明。 协程和事件循环 为了理解asyncio模块,需要先了解协程和事件循环的概念。协程是一种轻量级的线程,有自己的栈空间,使用协程…

    python 2023年6月6日
    00
  • Python中利用pyqt5制作指针钟表显示实时时间(指针时钟)

    让我为你详细讲解一下如何在 Python 中使用 PyQt5 库制作指针时钟显示实时时间。 1. 创建 Qt 应用程序 首先,需要导入 PyQt5 库和系统时间模块,然后创建一个 Qt 应用程序。 import sys import datetime from PyQt5.QtWidgets import QApplication, QWidget from…

    python 2023年6月2日
    00
  • python pandas分组聚合详细

    下面我将详细讲解“Python Pandas 分组聚合详细”的攻略。 一、背景介绍 在数据分析和处理中,对数据进行分组和聚合是非常常见的技术。Pandas是一款Python数据处理的工具包,它提供了强大的分组和聚合功能,能够让我们轻松地对数据进行分组和聚合处理。接下来,我将详细介绍Pandas分组聚合的操作方法。 二、使用方法 在Pandas中,分组聚合的操…

    python 2023年5月14日
    00
  • python动态规划算法实例详解

    下面是关于“Python动态规划算法实例详解”的完整攻略。 1. 动态规划算法简介 动规划算法是一种用于解决最优化的算法,它将问题分解为子问题,并使用递推的方式求解子问题的最优解,最终得到原问题的最优解。在Python中,我们可以使用动态规划算法来解决一些复杂的问题,例如背包问题、最长公共子序列问题等。 2. Python实现动态规划算法 2.1 背包问题 …

    python 2023年5月13日
    00
  • Python3.6+selenium2.53.6自动化测试_读取excel文件的方法

    下面我将详细讲解 “Python3.6+selenium2.53.6自动化测试_读取excel文件的方法”的完整实例教程。 确认环境 首先要确保你已经安装了Python3和selenium库,否则需要先安装它们。 在Python3中安装selenium的命令: pip3 install selenium==2.53.6 同时还需要安装一个操作Excel的库x…

    python 2023年5月13日
    00
  • 01、uwsgi、gunicorn如何实现优雅重启

    1、为何需要优雅重启 在实际开发过程中,我们会不断迭代升级产品,每次迭代后,都需要在线上服务器更新代码。一般小公司的迭代升级,是没有做到像金丝雀发布或者使用到kubernetes这些东西的。那如何保证更新的时候,之前接收到的请求能够正常处理完成呢,这个时候就需要实现优雅重启了。 那如何实现优雅重启呢,其实,我们部署python web服务所用到的uwsgi和…

    python 2023年4月18日
    00
  • Python中列表和元组的使用方法和区别详解

    Python中列表和元组的使用方法和区别详解 在Python中,列表和元组都是常用的数据类型,它们都可以用来存储多个元素。本文将详细讲解列表和元组的使用方法和区别。 列表的使用 列表是一种有序的可变序列,可以存储任意类型的元素。列表的定义方式如下: lst = [element, element2, …, elementn] 其中,element1到el…

    python 2023年5月13日
    00
  • OpenCV-Python实现图像梯度与Sobel滤波器

    下面我将为你详细讲解OpenCV-Python实现图像梯度与Sobel滤波器的完整攻略。 什么是图像梯度? 图像梯度是图像中灰度变化的快速变化率,也就是说,图像中某一个位置的梯度值越大,说明这个位置的像素值发生了快速的变化。 什么是Sobel滤波器? Sobel滤波器是一种常用的图像边缘检测算法。在OpenCV中,Sobel()函数可以用来创建Sobel滤波…

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