Skip to content

记录|为安装PyQt5而走的各种弯路

观前提示:

  • 这篇文章是今天写的,事情是昨天干的,要写这篇文章的想法是昨天搞定以后睡前萌发的。
  • 笔者学金融的,不是学计算机的,出现了很多傻傻的操作。
  • 文章真的特别特别长,想看就看。
  • 程序代码来源:[blog.csdn.net/zujiasheng/article/details/124670676]

1 事情的起因是这样子的

昨天考完英语视听说,看到一篇名为“用Python制作一个桌面宠物玩!”的文章,详细地列出了作者写的代码和思路。

于是,我产生了兴趣。

决定哪怕只是把代码敲一遍也好,自己做一个可爱的桌面宠物超酷的好嘛!(几个小时后的我绝对会后悔这个决定的。)

2 开始走弯路......

先是花了半小时不到敲完了所有代码,顺便学了学代码的思路与结构(虽然当时还不知道这个是什么),然后在网上找了几张可可爱爱的gif动图,重命名,放到main.py同层文件夹里。 gif图片收集

之后,我运行了程序,结果到处报错(这时候还是很有动力的,认真的去看语句错误)。

2.1 学pip

首先就是这几条语句有问题。 语句问题

然后上网查了一下PyQt是什么,然后意识到原来这个包需要安装。 PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是最强大的库之一。PyQt是由Phil Thompson 开发。 嗯,行吧,好久没用pip,重新捡起来也没事。然后......就是我下午噩梦的开始,现在写下这些,我才意识到我当时有多愚蠢(无语)。

紧接着,开始查怎么安装。

哦对,是用pip;pip在哪键入来着?哦,cmd;cmd怎么打开来着?哦,win+x-Windows终端。ok,拿下。

2.2 我以为好了

键入下面这几句语法(或者可以用pip3): pip install PyQt5 pip install PyQt5-tools 第二条是用来装Qt工具的,PyQt5不再提供常用Qt工具,必须自行安装Qt工具。

由于安装默认使用国外的镜像,经历了漫长的等啊等,等啊等,我都看完一集电视剧了,终于装好了(喜极而泣)。

故事当然不会这么简单就结束,这只是个开始。

2.3 以为需要加环境变量

我以为它装好了,其实,在装Qt工具的时候,它报错了,而我对cmd的语句不熟悉,虽然没看到successfully,但是它走了这么多条语句,就以为它装成功了,我也就没往上拉进度条。

悲剧就是这么发生的。

我再次运行程序,它还是报错。我当时就很不理解,我遵循步骤来了啊,为什么不能运行呢?

然后,上网查资料。

发现有些教程说,安装PyQt5需要调试环境变量,一脸懵逼,这是什么,真的不会(这时有点慌),总之,先试试?

但是,我跟着教程找啊找,找啊找,就是找不到PyQt5-tools文件夹。我再次迷惑了,为什么? 我试图冷静下来。

没有文件夹,是不是说,我安装失败了?不然不可能没有注册表的?

2.4 卸载重装,不理解为什么失败

这下,我隐约记起来了,好像大概确实出现了红字,出现了error。行吧,那就当没装成功,卸载重装吧。

输入: pip uninstall PyQt5 pip uninstall PyQt5-tools 好,Qt工具确实没装成功,直接提示没找到指定文件。

重新安装,这次我看清了,tools就是装不上。我不理解。

2.5 以为版本不匹配

再次上网查攻略。

有些回答告诉我,pip等级过低,需要将pip升级,尝试一下: pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple pip(或者用pip3) 有些回答告诉我,是PyQt5和PyQt5-tools的版本不兼容。

所以,键入: pip list 可以查看类似的pip安装列表版本号(这是最终版): pip_list

pip等级已经最高了,PyQt5是5.15.6和PyQt5-tools的版本号忘记了,总之,版本确实不兼容。 好,我认了,继续。

这次用这些语句: pip install PyQt5==5.15.5 pip install PyQt5-tools==5.15.5 以上过程都非常正常,一个正常人的学习安装的过程。

但是,你以为这次拿下了?不不不,接下来就是我愚蠢的开始。

经过漫长的等待,tools还是装不上(已经开始有点崩溃了)。

2.6 出现新的警告,提示路径错误

出现了黄色警告代码: “The script automat-visualize.exe is installed in ‘(这里是文件路径)’ which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.” 为什么?我不理解!(再次心态爆炸)

害,行吧,哪怕失败了,由于是自己要做的,我还是继续磕吧。

2.7 胜利的曙光

继续查资料ing......

这次直接把报错信息输入搜索引擎找,得到的解决方案是这样的: 黄色警告解决方法

我尝试了一下,不行。。。

行,我再找,这次换了一个关键词搜索,“PyQt5安装失败原因”。

终于,迎来了曙光,我发现了问题的关键!

经过无数回答的印证,我终于找到了安装失败的原因: python版本太高,pyqt和它不,兼,容! 得出结论的时候简直不要太开心!但是也是崩溃的!这原因也太简单了!我恨!

网上给出的解决方案是这样的:

  1. 不用尝试pyqt6,因为它和pyqt5一样,python3.9以上版本都不兼容;
  2. 最简单的方式是python降级,用3.7-3.9版本的;
  3. 用替代产品PyQtDesigner一样可以实现pyqt的功能。

第三点我仔细地看了,要做的这个软件的语法完全来自pyqt包,不能替代,pass

那么只能python降级了。

2.8 再次报错

于是,又是一顿操作,卸载python3.10,装python3.8,pycharm更换编译器,卸载pyqt5和tools的组件,重装5.15.5版本。

我以为,这一次可以了,但是,还是不行!出现了新的报错: “ModuleNotFoundError: No module named 'PyQt5.sip' Preparing wheel metadata ... error” 这又是什么啊!!!这个下午心情大起大落!

还是得继续,我不信今天搞不定!

资料显示,PyQt5.sip模块没有安装,连带着版本不匹配。

卸载PyQt5.sip模块,嗯,确实提示没有安装,卸载所有pyqt5相关组件,重装,同时键入: pip install PyQt5-sip 进行安装,再用pip list查看版本号

网上说PyQt5-sip版本号不能太高,我的是12.10.1,应该可以。

这次安装成功!

谢天谢地!直接原地360度旋转庆贺一下! 13

2.9 成功安装PyQt5包

至此,PyQt5安装成功,但是程序还没跑过,之后就是程序的问题。

3 程序报错

安装完成!开始运行程序!这次应该可以了吧... 可惜,程序报错: ‘gbk’codec can’t decode byte 0xaf in position 81: illegal multibyte sequence 嗯,我看懂了,gbk编码器不能解析位于81中字节0xaf:非法多比特序列 即文件的编码和解码的格式不一致,所以需要在open()函数中添加解码器格式与文件编码格式一致 加上一句‘encoding=utf-8’

再来运行,成功!

我成功啦!!!好开心!!!

4 程序打包,导出为exe

4.1 pyinstaller安装

这一步需要用到pyinstaller包,pip安装! pip install pyinstaller

4.2 打包

再进入项目目录,输入命令行: pyinstaller -F -w main.py 等等,cmd怎么进入项目目录???我还要去学一下...

幸好比较简单:

  1. cmd命令提示符进入E盘: 【e:】+回车键;
  2. 进入E盘下的文件夹:【cd+文件夹名称】 +回车键;
  3. 创建新的文件夹:【mkdir+文件夹名称 】 +回车键。 简单!

进入项目目录,导出!

成功!

开心死了!!!

运行,猛男必备桌面宠物!! 运行结果

5 总结

5.1 从下午3点到晚上8点

中间除了半小时吃饭以外,一直在搞pyqt的安装。

浅浅感受一下我查了多少资料: pyqt安装过程

5.2 pyqt的安装注意

  1. 安装全程在cmd中进行,可以选择直接安装,也可以选择镜像安装和下载whl包安装;
  2. python版本需在3.7-3.9之间;
  3. pip需要升级到最高;
  4. 需要注意PyQt5和PyQt5-tools的版本号需要匹配;
  5. 需要安装PyQt5-sip,且版本号要低于PyQt5;
  6. 可能需要安装wheel组件;
  7. pip list命令行可以查看所有版本号;
  8. 学一学简单的cmd语句,比如进入到目标目录;
  9. 遇到报错不要慌,直接将报错信息扔到搜索引擎,总归有解决方法。

5.3 程序相关

  1. 学到了pyqt的语法!
  2. 学会了用encoding解决数据编码格式问题!

5.4 发文原因

  • 发出来的原因是单纯想分享一下这种经历,超有趣的好嘛!
  • 顺便也能给其他想要尝试的朋友一些经验,毕竟我可能是把能走的弯路都走了一遍,网上有人写了完整的安装教程,但是教程里一般不会出现这些问题,展示的只有成功。
  • 总之,虽然耗费的时间很多,但是自己去学这些东西,真的超级有动力,学成后也是格外有成就感!

5.5 我好开心!!!

13