返回顶部
首页 > 资讯 > 后端开发 > Python >【Python】pyinstaller的介绍与使用
  • 394
分享到

【Python】pyinstaller的介绍与使用

python 2023-09-01 17:09:27 394人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

一、 概述 1、 简介 pyinstaller是一个第三方库,它能够在windows、linux、 Mac OS X 等操作系统下将 python 源文件打包,通过对源文件打包, Python 程序可

一、 概述

1、 简介

pyinstaller是一个第三方库,它能够在windowslinuxMac OS X 等操作系统下将 python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。

PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linux上使用,但是并不是跨平台的,而是说你要是希望打包成.exe文件,需要在Windows系统上运行PyInstaller进行打包工作;打包成mac app,需要在Mac OS上使用。

2、 安装与更新

安装:pip install pyinstaller
更新:pip install --upgrade pyinstaller

注意:
1.PyInstaller 库会自动将 PyInstaller 命令安装到 Python 解释器 目录中,与 pip 或 pip3 命令路径相同,因此可以直接使用。
2.Windows上运行PyInstaller还需要PyWin32或者pypiwin32,其中pypiwin32在你安装PyInstaller的时候会自动安装。

二、 基本使用

1、 使用示例

语法:pyinstaller 选项 python源文件路径

不管这个 Python 应用是单文件的应用,还是多文件的应用,只要在使用 pyinstaller 命令时编译作为程序入口的 Python 程序即可。

PyInstaller工具是跨平台的,它既可以在 Windows平台上使用,也可以在 Mac OS X 平台上运行。在不同的平台上使用 PyInstaller 工具的方法是一样的,它们支持的选项也是一样的。

如,在python源文件的目录中打开终端,在进行输入
图片
成功后会出现
图片

2、 常用选项

图片

上表列出的只是 pyinstaller 模块所支持的常用选项,如果需要了解 Pyinstaller 选项的详细信息,则可通过 pyinstaller -h 来查看

三、 多文件打包

1、 概念

这里是使用Windows进行打包的,当然其他平台的打包参数也是类似,可以去官网学习

这里,我们需要学习,如何使用pyinstaller将多个py文件打包成一个EXE文件,供我们使用:

首先,我们需要学习,什么是多文件?

多文件就是有一个主文件,主文件依赖其余的py文件才能运行,通过import连接
我们需要使用的是.spec文件

首先,我们创建一个目录结构:
图片

2、 规范文件

然后,学习一个命令:

pyi-makespec main.py  # 运行 pyinstaller ,以main.py为主文件,生成一个spec文件,作为一个标准

此规范文件也可以自己编写,同时,生成规范文件时,直接打包的那些参数都可以使用

运行后,其在运行目录下生成一个main.spec文件,其内容为:

# -*- mode: python ; coding: utf-8 -*-block_cipher = None  #设置 加密,需要安装tinyaes第三方库,最多16位字符,此处在使用--key= 会有变化a = Analysis(    ['main.py'],  # 运行的所有py文件,包括依赖的py文件     pathex=[],  # 搜索导入的路径列表(此列表为项目绝对路径),包括选项给出的路径--paths,项目需要从什么地方导入自定义库    binaries=[],  # 脚本需要的非python模块,包括--add-binary选项给出的名称,二进制数据    datas=[],  # 应用程序中包含的非二进制文件,包括--add-data选项给出的名称,项目需要用到什么数据,比如图片,视频等。里面格式为tuple,第一个参数是文件路径,第二个是打包后所在的路径,其为一个元组:('image/*.png','data/image')    hiddenimports=[],   # 假如打包后打开exe显示module not found,就要把该库添加到hiddenimports里面了    hookspath=[],      hooksconfig={},  # 挂钩配置选项由一个字典组成    runtime_hooks=[],      excludes=[],  # 假如你用的python有很多库,但是你不需要用到某个,那么就把它添加到里面去,可以压缩文件大小    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,  # 打包成EXE的脚本文件    # a.binaries,  # 如果是单文件模式,则需要添加;多文件也可以添加   # a.zipfiles,    # a.datas,    [],    exclude_binaries=True,  # 是否排除二进制文件,为True时,为排除二进制的文件,当文件交大时包含二进制文件运行较快,如果是单文件,则没有这个选项    name='main',  # 打包程序的名字    debug=False,  # 是否启用调试功能    bootloader_ignore_signals=False,    # runtime_tmpdir=None,  # 生成单文件时需要这个参数,定义运行时的临时文件夹    strip=False,    upx=True,  # 打包的时候进行压缩,False表示不压缩;要用到一个压缩程序UPX,用于压缩文件,需要单独下载    console=True,  # 打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行,等于是是否加-w参数    disable_windowed_traceback=False,      argv_emulation=False,    target_arch=None,    codesign_identity=None,    entitlements_file=None,        """添加选项,初始化时没有的"""    icon="",  # 指定应用程序的图标,传入路径,可以相对路径    )coll = COLLECT(    """    如果是单文件模式,不需要这个COLLECT类,同时需要将:        a.binaries,    a.zipfiles,    a.datas,    这些数据文件添加到EXE中    """    exe,    a.binaries,    a.zipfiles,    a.datas,    strip=False,    upx=True,    upx_exclude=[],    name='main',)

如果需要更加详细的打包语法,可以到官方文档查看:https://pyinstaller.org/en/stable/index.html
在单文件模式下,不调用COLLECT,并且 EXE实例接收所有脚本、模块和二进制文件
对于Analysis,我们主要要对

  • script: 写所有的py文件
  • pathex:写项目的地址,以及自定义库的地址
  • datas:静态文件数据的地址
  • binaries:二进制文件地址,如果有报错,或者,需要用的时候再添加

其余的,不是常用的,直接运行不会影响程序的正常执行,但是想要更加精细一点的话,建议根据上面的注释来进行修改

3、 项目打包

然后,我们就需要将我们的项目进行打包了:

我们首先编写main.spec文件:

# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(    ['main.py', "demo1.py"],      pathex=["D:\\35005\\桌面\\demoTest"],    binaries=[],    datas=[("config\\*.JSON", "config")],    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='main',    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,)

这里是进行单个文件的打包,打包完成后,我们需要把那个config文件夹移动到可执行程序的同级目录下,然后就可以运行成功了!

运行成功后的目录结构为:
图片
最后,就可以把我们生成的程序发给别人使用啦!

来源地址:https://blog.csdn.net/weixin_45953322/article/details/128774685

--结束END--

本文标题: 【Python】pyinstaller的介绍与使用

本文链接: https://lsjlt.com/news/389009.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【Python】pyinstaller的介绍与使用
    一、 概述 1、 简介 pyinstaller是一个第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可...
    99+
    2023-09-01
    python
  • python gflags介绍与使用
    python gflags介绍与使用 1.升级python到2.6版本以上,否则安装setuptools会失败; 2.下载setuptools并安装,地址为:http://pypi.python.org/packages/2.6/...
    99+
    2023-01-31
    python gflags
  • Python ttkbootstrap的介绍与使用教程
    目录一、什么是ttkbootstrap?二、安装步骤三、开始使用四、总结时间五、参考文献一、什么是ttkbootstrap? 官方文档 [较慢]:https://ttkbootstr...
    99+
    2023-03-21
    Python ttkbootstrap使用 Python ttkbootstrap
  • Python中jieba库的介绍与使用
    目录前言:目录:一、jieba库基本介绍(1)jieba库概述 (2)jieba分词的原理二、jieba库使用说明 (1)jieba分词的三种模式三:jieba库...
    99+
    2023-03-02
    Python中jieba库使用 Python中jieba库
  • JDBC的介绍与使用
    1. JDBC的介绍   jdbc为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成。  访问数据库的流程  在连接这一过程中,一般初学者是MySQL和java在同一个电脑上,建立...
    99+
    2024-04-02
  • ResultSet的介绍与使用
    ResultSet是Java中用于表示数据库查询结果的对象,它可以对查询结果进行遍历和访问。一般来说,当使用JDBC进行数据库查询时...
    99+
    2023-09-11
    ResultSet
  • python中sample函数的介绍与使用
    目录1 sample(序列a,n)2 random sample()补充:Pandas-sample随机抽样实例总结1 sample(序列a,n) sample(序列a,n) 功能:...
    99+
    2024-04-02
  • Python中ttkbootstrap的介绍与基本使用
    目录一、什么是ttkbootstrap?二、安装步骤三、开始使用表签(Label)样式按钮(button)样式输入框(Entry)样式文本框(Text)样式四、总结时间一、什么是tt...
    99+
    2023-01-15
    python ttkbootstrap 文件 python ttkbootstrap
  • Swoole与HTTP的使用介绍
    这篇文章主要讲解了“Swoole与HTTP的使用介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Swoole与HTTP的使用介绍”吧!目标了解swoole的http_server的使用了解...
    99+
    2023-06-07
  • Python:jieba库的介绍与使用
    前言: jieba是优秀的中文分词第三方库,由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个词组,这种手段叫做分词,我们可以通过jieba库来完成这个过程。 目录: 一、jieba库基本介绍 (1)jieba...
    99+
    2023-09-22
    python
  • Python中的引用与copy介绍
    目录Python中的引用和copy1、引用整型数据及列表2、传递引用3、copy模块中的copy()和deepcopy()Python中的引用和copy 1、引用整型数据及列表 这里...
    99+
    2024-04-02
  • Linux下Rsync的介绍与使用
    本篇内容介绍了“Linux下Rsync的介绍与使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!0.Rsync的介绍rsync是Linux系...
    99+
    2023-06-05
  • Mapstruct的具体介绍与使用
    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。 如果小伙伴们觉得我的文章不错,记得一键三连哦 文章目录 一、mapstruct简介二、mapstruct与其他映射对比三、m...
    99+
    2023-09-03
    java
  • MySQL游标的介绍与使用
    目录定义游标的作用游标的使用游标语法条件处理创建表-test1-test2-test3测试游标过程解析定义 游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行遍历数据的...
    99+
    2022-12-16
    MySQL游标 MySQL游标是什么
  • Python的函数使用介绍
    目录1 跳出循环-break2 python函数2.1 内置函数2.2 自定义函数2.3 main函数1 跳出循环-break python提供了一种方便快捷的跳出循环的方法-bre...
    99+
    2024-04-02
  • Python中itertools简介使用介绍
    目录Python中itertools模块一、 简介二、 使用介绍1、 常用迭代器1.1 chain1.2 groupby2、 无穷迭代器2.1 count2.2 cycle2.3 r...
    99+
    2022-12-28
    Python中itertools Python itertools详解 Python itertools
  • 使用PyInstaller把Python
    1、下载地址:http://www.pyinstaller.org/ 。2、解压即用(V2.1)。注意环境变量,或者用pyinstaller.py的全路径,或者到解压目录下使用。*^_^*3、打包命令示例:python pyinstalle...
    99+
    2023-01-31
    PyInstaller Python
  • python中urlparse模块介绍与使用示例
    简介 urlparse模块主要是用于解析url中的参数 对url按照一定格式进行 拆分或拼接。urlparse库用于把url解析为各个组件,支持file,ftp,http,https, imap, mai...
    99+
    2022-06-04
    示例 模块 python
  • Python模块介绍与使用详细讲解
    目录模块的相关概念 1. 什么是模块2. 使用模块的好处模块的使用1. 自定义模块a) 方法一: 导入模块:b) 方法二c) 导入自己的模块Python中的包 1...
    99+
    2024-04-02
  • VueMixins混入介绍与使用
    目录混入(Mixins)介绍Mixins使用1,建立js文件2,mixins.js代码3,页面局部混入全局混入混入(Mixins)介绍 混入 (mixin) 提供了一种非常灵活的方式...
    99+
    2023-02-02
    Vue Mixins混入 Vue Mixins
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作