Pyinstaller 使用过程中遇到的坑

1.windows平台源码安装

正常环境有网,可以直接用pip install pyinstller安装,相关的各种依赖库也会自动安装。但是我这边有些特别环境没网,那只能通过源码安装。
可以参看官方文档中的 Installing from the archive 部分.从github下载源代码,download link,下载后执行命令python setup.py install
运行过程中会有各种报错。正常需要安装以下几个包pywin32pefilealtgraphfuturemacholibpywin32_ctypes

2.设置生成exe文件的版本号

  1. 在命令中加入--version-file 的选项pyinstaller -D --version-file version.txt run.py

  2. 使用 spec文件编译
    在a.datas后面加version字段

    exe = EXE(pyz,  
         a.scripts,  
         a.binaries,  
         a.zipfiles,  
         a.datas,  
         version='version.txt'  
         name='loader',  
         debug=False,  
         strip=False,  
         upx=True,  
         console=True )

3.spec文件介绍

spec文件中主要包含4个class: Analysis, PYZ, EXE和COLLECT.

Analysis以py文件为输入,它会分析py文件的依赖模块,并生成相应的信息
PYZ是一个.pyz的压缩包,包含程序运行需要的所有依赖
EXE根据上面两项生成
COLLECT生成其他部分的输出文件夹,COLLECT也可以没有

4.no module named pywt.extensions.cwt

在spec文件hiddenimports填上缺失的模块

a = Analysis(['loader.py'],
            pathex=['github\\py_exceltools'],
            binaries=[],
            datas=[],
            hiddenimports=["pywt","pywt._extensions._cwt"],
            hookspath=[],
            runtime_hooks=[],
            excludes=[],
            win_no_prefer_redirects=False,
            win_private_assemblies=False,
            cipher=block_cipher)

5.双击执行一闪而过的问题

在cmd中通过输入命令执行生成的exe,不要双击执行

6.生成版本信息模板txt文件

切换到python解释器安装路径下的:Lib\site-packages\PyInstaller\utils\cliutils\ 目录,
执行 python grab_version.py filename.exefilename.exe 随便找一个exe文件执行,会在当前目录下生成fileversioninfo.txt文件

参考文章:PyInstaller各参数含义

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部