首页 > 其他分享 >Pyinstaller 使用笔记

Pyinstaller 使用笔记

时间:2023-09-30 09:15:56浏览次数:39  
标签:可执行文件 pyinstaller Pyinstaller 笔记 命令行 使用 测试工具 False

Pyinstaller 用于将 Python 应用和连同其所需依赖打包在一起,使其可以在不安装 Python 解释器的相同操作系统的计算机上运行。Pyinstaller 库支持 Python 3.8 及其更新版本,可以正确地打包较大 Python 包 ,如 numpy, matplotlib, PyQt, wxPython 等等。需要注意, Pyinstaller 不是一个跨平台的工具,也就是说,在 Windows 系统打的包只能运行在 Windows 系统上。

 

安装 

# 安装 pyinstaller 
pip install pyinstaller
# 更新到最新版本的 pyinstaller 
pip install -U pyinstaller 
# 采用国内阿里 pypi 镜像安装加速
pip install pyinstaller -i https://mirrors.aliyun.com/pypi/simple/

 

使用

使用命令行选项打包

通过命令行选项输入相关参数,具体命令如下:

pyinstaller -F -w main.py -n 测试工具

其中,

-F 选项,创建一个打包的执行文件;-w 选项,执行文件运行过程中,不出现命令行窗口;-n 测试工具,指定输出的可执行文件名为 "测试工具"。更多选项,参见 Using Pyinstaller - Options 。

使用配置文件打包

pyinstaller 测试工具.spec

配置文件 "测试工具.spec" 的具体内容,如下所示

# -*- 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='测试工具',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

从配置文件中,可以比较明显地看出,对 main.py 文件进行打包,不显示 console 命令行窗口,输出执行文件名为 "测试工具"。

 

调试

01. 重新带有 console 的可执行文件

如果 Pyinstaller 生成的可执行文件运行过程中,出现闪退问题。通过重新生成带有 console 命令行的可执行文件,具体命令如下:

pyinstaller -F -c main.py -n 测试工具

从上面命令可以看出,只需把 -w 选项替换为 -c 选项,即可。

或者直接修改配置文件,将 console=False 改为 console=True,重新运行如下命令:

pyinstaller 测试工具.spec

02. 命令行界面运行可执行文件(不要直接双击运行)

为了避免闪退时,命令行界面同时闪退,需要在命令行(Windows cmd 或 Linux shell)下运行 Pyinstaller 生成的可执行文件。

 

问题及解决方法

问题1,

Python 代码直接运行无问题,而 Pyinstaller 打包生成的可执行文件运行时,出现 ModuleNotFoundError:  No module named XXXXXX 问题。

解决方法,

问题原因是,依赖包动态导入其他 Python 库。此时,需要把 XXXXXX 库,添加到配置文件的 hiddenimports=[] 的列表,修改为 hiddenimports=['XXXXXX'] ,其中 XXXXXX 为没有找到的模块名,注意,模块名需要放到引号内。

 

参考资料

[1] PyInstaller Manual. https://pyinstaller.org/en/stable/. 

[2] 2个技巧,学会Pyinstaller打包的高级用法. https://zhuanlan.zhihu.com/p/398619997

标签:可执行文件,pyinstaller,Pyinstaller,笔记,命令行,使用,测试工具,False
From: https://www.cnblogs.com/klchang/p/17737586.html

相关文章

  • 从小工到专家阅读笔记(二)
    4.足够好的软件所有设计出的系统都必须满足其用户的需求.才能取得成功.我们只是在宣扬、给用户以机会.让他们参与决定你的软件是否能让他们满意。“使质量成为需求”,很多时候都是开发人员在进行对于质量的评估,我们对质量要求低的话,交付时就会出现很多问题,我们对质量要求高,又会很大......
  • 《信息安全系统设计与实现》第四周学习笔记
    一、课程内容第七章学习文件操作级别1、硬件级别fdiskmkfsfsck碎片整理2、操作系统内核中的文件系统函数3、系统调用4、I/O库函数5、用户命令6、sh脚本低级别的文件操作中的常用函数:打开和关闭文件:open():打开文件并返回文件描述符。close():关闭文件。读写文件:......
  • Spring缓存框架使用及原理
    使用maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId>......
  • 修改了字符集,好多软件不能正常使用,所以,慎重。。。。
    这里,默认是没有选中的。所以,你千万不要随便就选中了。(terminal里乱码的问题,可以通过命令:chcp65001解决)。如果你执意选中了这里,重启之后,至少4个软件异常:1、同花顺彻底不能用了2、央视影音右键也是一片黑3、QQ游戏里的QQ象棋,按钮上的汉字无法显示4、QQ也得更新,中文文件夹乱码......
  • UCB-Sysadmin 笔记
    LinuxSystemAdministrationDecalAcoursecoveringthebasicsofsettingupandadministeringaproduction-qualityLinuxserverenvironment.Lab1找出隐藏文件ls-a连接输出,然后删除文件catnaming_is_hard*|xargs#stanford>berkeleyrm-rfn......
  • 《梦断代码》读书笔记02
    1、对该项目的人的认识不得不承认的一点是,这个项目的基础特别棒,在万众瞩目下开启开发的旅程,历时七年,在完工之际,已经没有人为之喝彩;项目团队人人都很优秀,在我眼里,他们不仅仅是久远时光里的一个出名的项目团队,他们还是独一无二的编程“疯子”,他们热爱编程、享受编程,不屑于将自己......
  • 《Java编程思想第四版》学习笔记32--关于static字段的序列化
    //:CADState.java//Savingandrestoringthestateofa//pretendCADsystem.importjava.io.*;importjava.util.*;abstractclassShapeimplementsSerializable{publicstaticfinalintRED=1,BLUE=2,GREEN=3;privateintxPos,yPos,dimension;p......
  • openGauss学习笔记-84 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT部署服
    openGauss学习笔记-84openGauss数据库管理-内存优化表MOT管理-内存表特性-MOT部署服务器优化:x86通常情况下,数据库由以下组件绑定:CPU:更快的CPU可以加速任何CPU绑定的数据库。磁盘:高速SSD/NVME可加速任何I/O绑定数据库。网络:更快的网络可以加速任何SQL*Net绑定数据库。除以......
  • 视频汇聚平台/视频管理平台EasyCVR开启后无法正常使用的原因排查
    EasyCVR视频汇聚平台能够在复杂的网络环境下,将各种分散的视频资源进行统一汇聚、整合和集中管理。在视频监控播放方面,EasyCVR支持多种播放协议,包括HLS、HTTP-FLV、WebSocket-FLV、WebRTC、RTSP和RTMP,并且支持对外分享。平台提供1、4、9、16个画面窗口播放的功能,可以同时播放多路视......
  • 使用MounRiver进行FPU配置
    MCU使用FPU时,MRS需要进行配置,具体配置方式如下图:开启硬件浮点MRS具体配置-Properties->C/C++Build->Setting->TargetProcessor->Floatingpoint选项配置成Singleprecisionextension(RVF)FloatingpointABI选项配置成Singleprecision(f)此外,还需要按照下图配置......