PyInstaller运行原理及常用操作详解

作者:_夕颜 时间:2022-09-15 03:57:26 

pyinstaller 属于Python第三方库,使用前需先安装

# 首先安装pyinstaller
pip install pyinstaller

PyInstaller生成可执行程序


# PyInstaller 工具的命令语法如下:

# 1、第一种
pyinstaller options ~/myproject/source/myscript.py

# 2、第一种
pyinstaller "C:\Documents and Settings\project\myscript.spec"

PyInstaller 支持的常用选项

-h,--help查看该模块的帮助信息
-F,-onefile

dist中产生单个的可执行文件   

eg:pyinstaller -F demo.py

-D,--onedir

产生一个目录(包含多个文件)作为可执行程序 

eg:pyinstaller -D demo.py

-a,--ascii不包含 Unicode 字符集支持
-d,--debug产生 debug 版本的可执行文件
-w,--windowed,--noconsolc

指定程序运行时不显示命令行窗口(仅对 Windows 有效)   

eg:pyinstaller -w demo.py

-c,--nowindowed,--console

指定使用命令行窗口运行程序(仅对 Windows 有效)  

eg:pyinstaller -c demo.py

-o DIR,--out=DIR指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p DIR,--path=DIR

设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径

eg:pyinstaller -p E:\python\Lib\site-packages demo.py

-n NAME,--name=NAME指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

1、创建一个 app 目录,在该目录下创建一个 入口app.py 文件

# 进入该app目录内,执行以下语法
pyinstaller -F app.py

当生成完成后,将会在此 app 目录下看到多了一个 dist 目录,并在该目录下看到有一个 app.exe 文件,这就是使用 PyInstaller 工具生成的 exe 程序。

在命令行窗口中进入 dist 目录下,在该目录执行 app.exe ,将会看到该程序执行结果。

注:若程序没有可视化界面,不能双击执行程序

2、创建一个 app 目录,在该目录下创建一个 入口app.py 文件

# 进入该app目录内,执行以下语法
pyinstaller -D app.py

执行上面命令,将看到详细的生成过程。当生成完成后,将会在 app 目录下看到多了一个 dist 目录,并在该目录下看到有一个 app 子目录,在该子目录下包含了大量 .dll 文件和 .pyz 文件,它们都是 app.exe 程序的支撑文件。在命令行窗口中运行该 app.exe 程序,同样可以看到与前一个 app.exe 程序相同的输出结果。

3、高级用法

当有特殊需求,比如打包图片资源文件时,就必须用到它的高级用法。

首先得了解spec文件,简而言之,spec文件就是一份告诉pyinstaller如何打包的配置文件。
可以通过pyi-makespec demo.py来生成demo.spec文件。其内容如下:


# -*- mode: python -*-

block_cipher = None

resources = (("inspurer.db", "."), ("dlib_face_recognition_resnet_model_v1.dat", "."),
("shape_predictor_68_face_landmarks.dat", "."), ("close_logcat.png", ".")
, ("open_logcat.png", "."), ("finish_register.png", "."), ("new_register.png", ".")
, ("start_punchcard.png", "."), ("end_puncard.png", "."), ("index.png", "."))

a = Analysis(['workAttendanceSystem.py'],
      pathex=['C:\\Users\\lenovo\\Desktop\\test\\python'],
      binaries=[],
      datas=resources,
      hiddenimports=[],
      hookspath=[],
      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,
    [],
    exclude_binaries=True,
    name='workAttendanceSystem',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=True )
coll = COLLECT(exe,
       a.binaries,
       a.zipfiles,
       a.datas,
       strip=False,
       upx=True,
       name='workAttendanceSystem')

对于上面这个文件,需要注意两点:

除了resources配置是我添加修改之外,其余全是自动生成,这个配置是用来添加资源文件的。

pathex是工程的根目录。

生成并配置好spec文件后,我们可以通过pyinstaller demo.spec来执行打包任务。

来源:https://www.cnblogs.com/caijunchao/p/12845620.html

标签:PyInstaller,运行,原理,操作
0
投稿

猜你喜欢

  • Python自动化测试PO模型封装过程详解

    2023-08-23 18:59:49
  • CentOS8安装SQLServer2019的过程

    2024-01-21 15:58:01
  • python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件

    2021-03-29 23:02:58
  • 页面中图像格式的选用之我见

    2007-10-31 18:11:00
  • 如何编写一个创建FTP站点的函数?

    2009-11-07 18:51:00
  • 基于python实现数组格式参数加密计算

    2021-08-20 23:29:54
  • Python数据分析Pandas Dataframe排序操作

    2022-06-28 07:44:11
  • Python实现螺旋矩阵的填充算法示例

    2022-06-30 00:18:47
  • pycharm 使用心得(二)设置字体大小

    2022-02-19 15:37:04
  • Python中的type与isinstance的区别详解

    2021-12-06 19:30:57
  • PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    2023-11-24 06:26:11
  • SQL SERVER迁移之更换磁盘文件夹的完整步骤

    2024-01-25 18:37:59
  • Python continue语句用法实例

    2021-02-16 07:40:00
  • Python项目实战之使用Django框架实现支付宝付款功能

    2021-12-11 23:28:11
  • getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现

    2024-04-22 13:01:07
  • 一篇文章带你了解清楚Mysql 锁

    2024-01-24 21:17:43
  • Go语言中的range用法实例分析

    2024-04-30 10:03:18
  • Eclipse配置python默认头过程图解

    2022-03-11 10:52:59
  • Python使用logging模块实现打印log到指定文件的方法

    2023-12-14 03:59:29
  • Python机器学习logistic回归代码解析

    2021-02-20 23:59:16
  • asp之家 网络编程 m.aspxhome.com