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 解决之后程序不闪退,但是依旧报错找不到资源文件
**原因分析:**版本问题
我的python
是3.7.3
下载的cx_freeze
是6.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