pyqt用pyinstaller打包出exe文件后运行不了?如图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyqt用pyinstaller打包出exe文件后运行不了?如图相关的知识,希望对你有一定的参考价值。

我添加了环境变量后就可以运行了,但到别人的机子还是弹出这个框,运行不了。该怎么办?打包时有这些信息(部分)这些warning什么意思?15031 WARNING: lib not found: api-ms-win-crt-string-l1-1-0.dll dependency of c:\python35\lib\site-packages\PyQt5\qt5core.dll15468 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\python35\lib\site-packages\PyQt5\qt5gui.dll12672 WARNING: lib not found: api-ms-win-crt-string-l1-1-0.dll dependency of c:\python35\DLLs\_bz2.pyd......

原因是我的界面是用QtDesigner生成的ui文件,但是pyinstaller没有打包进来,把相关的ui文件以及用pyuic生成的py文件复制到start.exe目录下即可运行!
如果pyinstaller用了-F命令,只生成一个exe, 也需要按照上面的方法复制相应的ui及ui生成的py文件来exe目录,且目录结构与原始项目结构要一致。追问

你好,你的意思是把ui文件和ui文件转成的py文件放到exe文件同一目录中吗?exe文件在dist文件夹中

要不要重新打包?

我有一个mainwindow,几个dialog对话框,还有一些ui文件

参考技术A

去anaconda 目录下,找对应文件夹plugins\\platforms,复制到程序路径即可

pyinstaller 打包过程及所有遇到的问题解决记录

使用 pyinstaller 将 pyqt 构建为 exe 后文件很大

【中文标题】使用 pyinstaller 将 pyqt 构建为 exe 后文件很大【英文标题】:Large file size after building pyqt to exe with pyinstaller 【发布时间】:2019-10-22 03:27:54 【问题描述】:

以下代码是我在pyqt小部件中使用的模块,但是我使用pyinstaller构建exe文件后,文件大小为233MB。

如何减小文件大小?

我尝试创建一个新的虚拟环境,但没有任何改善,我也尝试在我的 pyinstaller spec 文件中添加excludes=['mkl','whl'],但也没有改善。

from PyQt5.QtWidgets import QMainWindow, QMessageBox, QApplication, QFileDialog
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import Qt, pyqtSignal, QEvent
import sys
from glob import glob
from numpy import array as nparray
from PIL.Image import open as imopen
from win32gui import GetWindowText, GetForegroundWindow
from MainWindow import Ui_MainWindow, resource_path
from qimage2ndarray import array2qimage
from shutil import move
from os import makedirs, chdir, getcwd
from os import path as ospath

MainWindow是我用qtdesigner构建的UI代码,它使用的模块是:

from PyQt5.QtWidgets import QWidget, QLabel, QPushButton, QStatusBar
from PyQt5.QtCore import QRect, Qt, QSize, QMetaObject, QCoreApplication
from PyQt5.QtGui import QFont, QIcon, QPixmap
import sys
from os.path import join, abspath

【问题讨论】:

【参考方案1】:

最后我通过here 提供的解决方案将我的 exe 文件大小从 233MB 减少到 64MB:

    新建conda环境pyinstaller-env 安装numpyconda install conda-forge::numpy "blas=*=openblas" 将环境切换到pyinstaller-env 并打包我的QT 应用程序。

【讨论】:

【参考方案2】:

对于我的应用,我能够将大小从 80mb 减小到 15mb

这是我所做的:-

首先在一个目录模式下使用pyinstaller

创建的文件夹有很多垃圾和不需要的东西所以首先删除你知道你没有在应用程序中使用的DLL文件。

然后对于其余文件使用 hit-and-trial 方法,删除一个文件并查看应用程序是否仍然正常工作,如果没有,则恢复该文件并尝试使用其他文件。

完成后,对所有 .pyd 文件使用 UPX(在 lzma 模式下)。 除了一些(如 VCRUNTIME.dll)外,大多数 DLL 也可以使用 UPX 压缩,因此您也必须对 DLL 文件进行命中和跟踪。

最后你可以在你的应用中压缩任何图片(如果有的话)。

完成(◠‿◕)

【讨论】:

以上是关于pyqt用pyinstaller打包出exe文件后运行不了?如图的主要内容,如果未能解决你的问题,请参考以下文章

PyInstaller 无法打包完成后,运行exe无反应?

PyQt5 python程序打包成.exe文件

Pycharm怎么打包Python脚本

pyinstaller打包,exe图片资源无法显示问题

Python如何打包EXE可执行文件

pyinstaller打包exe文件太大,利用pipenv轻松解决