使用python开发GUI应用程序遇到的一系列问题

准备用Python开发一个exe应用程序。

首先写出代码,然后通过pyinstaller封装成一个exe文件,之后正常来说,双击程序就可以运行了。 但是在实际开发过程中遇到了很多问题。

一、首先是按照打包工具pyinstaller,支持python2、python3的所有版本。使用命令行: pip install pyinstaller  

在pip安装过程中,可能会因为网速或其他原因导致安装失败。所以为了提高安装速度采取了博客中的方法。

二、然后cmd进入.py文件所在的文件夹,也可以在.py文件所在的文件夹使用 shift加右键,直接进入。接着在命令行输入 pyinstaller -F -w test.py,这里一些博客中加了‘test.py’,这会报错。随后,会在目录下生成几个文件夹,发现在dist文件夹中就出现了exe软件。双击,查看是否可以运行程序。需要注意的是,在生成exe程序时,可能会被电脑上的杀毒软件误删,因此可以关闭杀毒软件进行相关操作。

这里,我遇到了以下问题:

1、运行 pip install pyinstaller 打包时提示报错:UPX is not available.

查阅相关资料, 找到了解决办法。https://blog.csdn.net/chentianveiko/article/details/107083912

pyinstaller使用UPX压缩, 所以需要安装一个UPX:

(1) 到官网 https://upx.github.io/ 下载了UPX, 下载下来是一个压缩包。

(2) 解压得到 upx.exe文件

(3) 把exe文件拷贝到pyinstaller所在目录下。

(4)重新运行pyinstaller命令发现运行成功: UPX is available。

2、双击运行程序报错。

以及另一个VCRUNTIME140.dll文件,报错意思是两个dll文件的路径不对或者版本及其他原因。首先将两个文件复制到开发文件同一目录下。

发现问题同样存在。

查阅了相关资料。如https://blog.csdn.net/weixin_39595453/article/details/100038181https://blog.csdn.net/zj910092147/article/details/72912248?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.controlhttps://blog.csdn.net/karmacode/article/details/90256460?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.controlhttps://blog.csdn.net/qq_19600871/article/details/81662431?utm_medium=distribute.pc_relevant.none-task-blog-title-15&spm=1001.2101.3001.4242都没有解决问题。

【解决方法】:pyinstaller --clean --win-private-assemblies -F XXXX.py
【参数说明】
–clean清除pyinstaller的缓存并移除之前建立的临时文件,
–win-私人组件把跟这个程序捆绑的共享的组件都改为私有的
调试阶段不用-w,因为如果有错误就打印在终端了而不是闪退

以及 https://blog.csdn.net/xinyingzai/article/details/80282856?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control

编辑spec文件添加第三方DLL。例如cx_Oracle模块用到的DLL,按如下格式编辑test.spec文件的datas=[]参数;

datas=[('oci.dll','.'),('oraociei11.dll','.')]

 

最后在博客https://blog.csdn.net/qq_38232378/article/details/95767597 中找到解决办法:

 

解决vcruntime140.dll没有被指定在Windows上运行

关闭upx即可

pyinstaller -F --noupx test.py

运行成功。 

注意:pyinstaller -F -w test.py命令中-w的意思是直接发布的exe应用带命令行调试窗口,在指令内加入-w命令可以屏蔽;-F的意思是使用-F指令可以把应用打包成一个独立的exe文件,否则是一个带各种dll和依赖文件的文件夹。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值