当前位置:   article > 正文

python:pyinstaller用法_python的pyinstaller用法

python的pyinstaller用法

一、基本用法

在项目所在文件夹按住shift 单击鼠标右键弹出菜单,打开Powershell,直接输入代码:

1、带图标,生成一个文件,关闭控制台

pyinstaller -F -w -i p.ico 1.py
  • 1

2、生成一个文件,关闭控制台

pyinstaller -F -w 1.py
  • 1

3、生成一个文件,关闭控制台,添加数据,排除不必要的库

pyinstaller -Fwi 4.ico 1.py --add-data 'data;.' --exclude-module Pillow --exclude-module tkinter
  • 1

二、pyinstaller相关参数

参数作用
-F, onefile产生一个文件用于部署(参见 XXXXX).
-D, onedir产生一个目录用于部署(默认)
-K, tk在部署时包含TCL/TK
-a, ascii不包含编码,在支持 Unicode 的 python 版本上默认包含所有的编码
-d, debug产生debug 版本的可执行文件
-w, windowed,noconsole使用Windows子系统执行,当程序启动的时候不会打开命令行,只对Windows 有效
-c, nowindowed,console使用控制台子系统执行(默认),只对Windows有效
-s, strip可执行文件和共享库将run through strip. 注意 Cygwin 的 strip 往往使普通的 win32 Dll 无法使用
-X, upx如果有UPX 安装 执行 Configure.py 时检测 会压缩执行文件(Windows 系统中的 DLL 也会 参见 note)
-o DIR, out=DIR指定spec 文件的生成目录 如果没有指定 而且当前目录是 PyInstaller的根目录 会自动创建一个用于输出 (spec 和生成的可执行文件 的目录 如果没有指定 而当前目录不是 PyInstaller 的根目录 则会输出到当前的目录下
-p DIR, path=DIR设置导入路径和使用 PYTHONPATH 效果相似 可以用路径分割符(Windows 使用分号 ,Linux 使用冒号 分割 指定多个目录 也可以使用多个 p 参数来设置多个导入路径
–icon=<FILE.ICO>将file.ico 添加为可执 行文件的资源 只对 Windows 系统有效
–icon=<FILE.EXE,N>将file.exe 的第 n 个图标添加为可执行文件的资源 只对Windows 系统有效
-v FILE,version=FILE将verfile 作为可执行文件的版本资源 只对 Windows 系统有效
-n NAME,name=NAME可选的项目(产生的 spec 的)名字 如果省略 第一个脚本的主文件名将作为 spec 的名字

三、载入图片数据

1、编辑qrc文件

  • ①先把图标资源文件放到工程所处的文件夹下面
  • ②在同一目录下(后面的操作都在该目录进行)创建一个 txt 文件 resource.txt 打开编辑
    格式如下:
<RCC>
    <qresource prefix="/">
        <file>1.png</file>
        <file>2.png</file>
        <file>3.png</file>
        ......
        # 有多少文件就写多少行
    </qresource>
</RCC>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • ③保存后更改文件后缀名为.qrc
    在这里插入图片描述

2、qrc转换为py文件

  • ①在项目所在文件夹按住shift 单击鼠标右键弹出菜单,打开Powershell

  • ②键入命令pyrcc5 -o 目标文件名 源文件名
    在这里插入图片描述

3、代码中载入py文件

在这里插入图片描述
在这里插入图片描述

注意:图片名称还是原来的名称,前面的“:”冒号一定不能少
最后使用pyinstaller 打包
键入pyinstaller -F -w -i 1.ico work.py
这个时候将之前用到的png 图标文件、qrc 文件和pyinstaller 生成的两个文件夹等删除也可以正常运行

四、打包依赖文件

源代码中所需路径修改为:

import os

# 路径转换函数
def temp_file(text):
    if getattr(sys, 'frozen', None):
        basedir = sys._MEIPASS
    else:
        basedir = os.path.dirname(__file__)

    print(basedir)

    return os.path.join(basedir, text)

# 调用时
file_path = temp_file('1.xlsx')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

打包命令:pyinstaller -Fwi w.ico 1.py --add-data '1.xlsx;.'

五、问题集锦

1、启动多进程时,产生多个窗口

multiprocessing.freeze_support()    # 多进程冻结窗口
  • 1

在主进程中使用:
在这里插入图片描述
在多进程调用的函数后面使用:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/630687
推荐阅读
相关标签
  

闽ICP备14008679号