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 解析html之BeautifulSoup

    Python解析HTML之BeautifulSoup 在本文中,我们将介绍如何使用Python中的BeautifulSoup库解析HTML。BeautifulSoup是Python中用于解析HTML和XML文档的第三方库,它提供了简单易用的API,使得解析HTML和XML文档变得非常容易。 步骤1:安装BeautifulSoup库 在学习BeautifulS…

    python 2023年5月15日
    00
  • python中有帮助函数吗

    当然,Python中有许多帮助函数(也称为内置函数),这些函数可以用于各种常见任务,例如字符串处理,列表操作,数字函数等。 Python提供的内置函数可以让我们更快速地完成一些任务,并且也可以帮助我们编写更少的代码。 下面是两个Python内置函数的例子: 示例1 – print() 函数 print() 函数是一个常用的内置函数,用于在控制台上打印文本。p…

    python 2023年6月5日
    00
  • Python3 tkinter 实现文件读取及保存功能

    接下来我将给出 Python3 tkinter 实现文件读取及保存功能的完整攻略,包括实现步骤和示例说明。 1.实现步骤 1.1 引入 tkinter 库 要使用 tkinter 库,需要在 Python3 中引入它。可以使用下面的代码: import tkinter as tk 1.2 创建 GUI 窗口 在 tkinter 中,使用 Tk() 函数创建一…

    python 2023年6月5日
    00
  • 使用NumPy和pandas对CSV文件进行写操作的实例

    使用NumPy和pandas可以方便地对CSV文件进行读写操作。下面将详细介绍如何使用这两个库对CSV文件进行写操作。 准备工作 在使用NumPy和pandas对CSV文件进行写操作之前,需要安装这两个库。可以通过以下命令在命令行中安装: pip install numpy pandas 安装完成后,就可以在Python中使用这两个库了。 使用NumPy写入…

    python 2023年6月3日
    00
  • 在Python中获取下一个字符代码加1 [重复]

    【问题标题】:Get next character code adding 1 in Python [duplicate]在Python中获取下一个字符代码加1 [重复] 【发布时间】:2023-04-02 23:05:02 【问题描述】: 我有其保持字母的变量。为了有一个具体的例子,让我们假定它是“A”。我有一个while循环,其在一定条件下将(在该情况下…

    Python开发 2023年4月8日
    00
  • 总结Python常用的魔法方法

    以下是“总结Python常用的魔法方法”的完整攻略。 1. 什么是魔法方法 魔法方法是Python中特殊方法,也称为双下划线方法或魔术方法。它们以双下划线(__)开头和结尾,用于实现类的特殊行为,例如运算符重载、属性访问、对象创建和销毁等。 2. 常用的魔法方法 2.1 init()方法 init()方法是Python中最常用的魔法方法之一,用于初始化对象的…

    python 2023年5月13日
    00
  • 关于python爬虫应用urllib库作用分析

    针对“关于python爬虫应用urllib库作用分析”的攻略,我将从以下几个方面进行分析: urllib库的概述及常用模块 urllib库的功能及常用方法 使用urllib库进行网站爬取的示例 1. urllib库的概述及常用模块 urllib是Python中内置的HTTP请求库,它包含了一系列处理URL的模块,常用的模块包括: urllib.request…

    python 2023年5月31日
    00
  • 详解Python os.path.sameopenfile()

    Python os.path.sameopenfile()函数用于检查给定两个文件描述符是否指向同一文件。 该函数原型如下: os.path.sameopenfile(fd1, fd2) 参数说明: fd1:文件描述符1。 fd2:文件描述符2。 返回值: 如果文件描述符fd1和fd2指向同一文件,则返回True,否则返回False。 事实上,os.path…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部