python+Qt5开发的程序打包成可执行程序的艰难历程

Posted 尚墨1111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python+Qt5开发的程序打包成可执行程序的艰难历程相关的知识,希望对你有一定的参考价值。

python+Qt5开发的程序打包成可执行程序的艰难历程

一、使用pyinstaller 进行打包

1、cmd 进入该文件目录:

https://blog.51cto.com/u_13502993/2420674

2、配置pyinstalller

https://blog.csdn.net/windforce828/article/details/104859379

https://blog.csdn.net/humanking7/article/details/80421898

3、遇到问题:

https://blog.csdn.net/qq_42063091/article/details/82423221

问题:

程序用到了图片文件,但是pyinstaller打包的时候不会把图片一起打包,所以即使替换成相对路径绝对路径也没有用,依旧报错

4、截图之后是发现找不到资源,路径有问题

配置文件的读取目录有问题。写程序的时候默认是同级目录,但是cmd调用的时候,应该是C:/user/vhills下进行,因此就会找不到你放在程序目录里的配置文件

pyinstaller打包出来的程序是不包含图片的,这时候程序就没办法正常运行,或者需要带着几张图片才能运行,

参考:https://blog.csdn.net/weixin_42146296/article/details/92848315

https://www.cnblogs.com/an-ning0920/p/10037790.html

用 os.path.realpath 替换之后,我的问题依旧没有解决

获取当前执行脚本的绝对路径。

二、使用cx_freeze进行打包

1、pip install cx_freeze下载插件

2、在项目根目录下新建setup.py文件

import sys
from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need fine tuning.
# "packages": ["os"] is used as example only
build_exe_options = { "packages": ["OpenGL"],# 用到的包加上
                     # "excludes": ["tkinter"],
                     "include_files": ["resources"],#包含资源,会把项目里面的resources复制一份
                     "includes": ["glumpy.app.window.backends.backend_qt5"]
    }

# base="Win32GUI" should be used only for Windows GUI app
base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
    name="main_win",
    version="0.1",
    description="My GUI application!",
    options={"build_exe": build_exe_options},
    executables=[Executable("main_win.py", base=base)]
)

3、命令行执行 python setup.py install

3.1 问题:打包失败

原因分析:

pyopengl的模块版本问题,原来是3.1.1a,下载更新成 3.1.5,问题解决

pip将某个包指定为固定版本

pip install pyopengl==3.1.5
pip install python==3.6.8

3.2 程序闪退

原因:缺少dll组件

解决:

anaconda中的bin中找到该文件,复制到打包之后的build文件夹中,(我的电脑安装了Anaconda软件)

3.3 解决之后程序不闪退,但是依旧报错找不到资源文件

**原因分析:**版本问题

我的python3.7.3 下载的cx_freeze6.8.2 一直报错无法解决,把python版本替换成3.6.8

修改 Interpreter,报错:CreateProcess error=2, 系统找不到指定的文件;

解决办法: https://blog.csdn.net/cekong05011/article/details/107656699

打包完毕之后,运行程序报错:this application failed to start because on qt platform plugin

**原因:**替换了Qt5,没有配置项目中 qt platform plugin 的环境变量 ,导致pycharm无法查找到plugin

**解决:**https://blog.csdn.net/qq_41767945/article/details/102504642

注意:

替换python版本之后需要将python加入环境变量中

然后因为是新加的python版本,许多相关的模块没有,要重新添加

三、至此;打包正常不再缺少dll文件,也能正常执行

哇的一声哭出来

以上是关于python+Qt5开发的程序打包成可执行程序的艰难历程的主要内容,如果未能解决你的问题,请参考以下文章

Windows用Pyinstaller把Python3程序打包成可执行文件exe

用Pyinstaller把Python3.7程序打包成可执行文件exe

python打包成可执行文件

pycharm将python程序制作成可执行程序的方法

java应用程序怎样打包成可jar执行程序?

将Winform程序及dll打包成可执行的exe