鱼C论坛

 找回密码
 立即注册
查看: 3404|回复: 7

打包PyQt失败,求解

[复制链接]
发表于 2017-4-17 21:19:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
准备学习PyQt,于是复制了一个鱼油的代码试试打包
程序在idle中运行时没问题的
但是使用pyinstaller打包虽然能够成功(能够生成EXE文件,而且也没有报错,出现的是success),但是EXE运行不了,点一下直接闪一下,没有出现窗口
程序代码是这个:
import sys
from PyQt5 import QtWidgets,QtGui

class Icon(QtWidgets.QWidget):#创建一个继承QtWidgets.QWidget的名叫Icon新类
    def __init__(self, parent = None):#调用Icon构造函数
        super().__init__()#调用QtWidgets.QWidget类的构造函数
        self.setGeometry(300, 300, 250, 150)#设置窗口在屏幕上的位置和设置窗口本身的大小
        #setWindowIcon()方法用来设置程序图标, 它需要一个 QIcon 类型的对象作为参数

if __name__ == '__main__':   
    app = QtWidgets.QApplication(sys.argv)
    icon = Icon()#实例化
    icon.show()
    sys.exit(app.exec_())

下面这个是日志文件中的内容
missing module named 'PyQt5.sip' - imported by f:\python352\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_qt5plugins.py
missing module named resource - imported by posix, C:\Users\happy\Desktop\Spiders\icon.py
missing module named posix - imported by os, C:\Users\happy\Desktop\Spiders\icon.py
missing module named _posixsubprocess - imported by subprocess, C:\Users\happy\Desktop\Spiders\icon.py
missing module named 'org.python' - imported by pickle, C:\Users\happy\Desktop\Spiders\icon.py, xml.sax
missing module named ce - imported by os, C:\Users\happy\Desktop\Spiders\icon.py
missing module named readline - imported by cmd, code, pdb, C:\Users\happy\Desktop\Spiders\icon.py
excluded module named _frozen_importlib - imported by importlib, importlib.abc, C:\Users\happy\Desktop\Spiders\icon.py
missing module named _frozen_importlib_external - imported by importlib._bootstrap, importlib, importlib.abc, C:\Users\happy\Desktop\Spiders\icon.py
missing module named _winreg - imported by platform, C:\Users\happy\Desktop\Spiders\icon.py
missing module named _scproxy - imported by urllib.request
missing module named java - imported by platform, C:\Users\happy\Desktop\Spiders\icon.py
missing module named 'java.lang' - imported by platform, C:\Users\happy\Desktop\Spiders\icon.py, xml.sax._exceptions
missing module named vms_lib - imported by platform, C:\Users\happy\Desktop\Spiders\icon.py
missing module named termios - imported by tty, C:\Users\happy\Desktop\Spiders\icon.py, getpass
missing module named grp - imported by tarfile, shutil, C:\Users\happy\Desktop\Spiders\icon.py
missing module named _dummy_threading - imported by dummy_threading, C:\Users\happy\Desktop\Spiders\icon.py
missing module named org - imported by copy, C:\Users\happy\Desktop\Spiders\icon.py
missing module named pwd - imported by posixpath, tarfile, shutil, http.server, webbrowser, C:\Users\happy\Desktop\Spiders\icon.py, netrc, getpass

我import sip明明是没有报错的,为什么说缺少这个模块呢?
我都可以找到这个sip.py文件,就是这个sip-4.19.1.dist-info
请问有知道这个报错到底处在哪里的么,
或者,可以提供一个可行的打包方法也行
继续学PyQt就是为了可以打包成exe来使用,如果打包都不能那学了就没意义啊,大坑。。。。。。。。
我系统是win10,64位,Python3.5.2
之前打包其他的程序是没问题的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-18 10:04:29 | 显示全部楼层
用cx_freeze打包试试?pyinstaller可能有些模块没有打包进去。或者试试打包后把缺少的模块放在一个文件夹下。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-18 10:12:18 | 显示全部楼层
Charles未晞 发表于 2017-4-18 10:04
用cx_freeze打包试试?pyinstaller可能有些模块没有打包进去。或者试试打包后把缺少的模块放在一个文件夹下 ...

感谢提醒
其实我知道pyinstaller打包要把导入的模块文件放在打包的文件夹下面,我是这样做的,pyQT的模块文件都复制一份放入了,还有这个日志报错的SIP,我也找到了放入了,还是这样报错,我就没辙了,我觉得是不是有可能是我的pyQT版本太高了,我回去可能要换个低版本的再试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-18 10:30:31 | 显示全部楼层
gopythoner 发表于 2017-4-18 10:12
感谢提醒
其实我知道pyinstaller打包要把导入的模块文件放在打包的文件夹下面,我是这样做的,pyQT的模 ...

用cx_freeze打包吧。我试了,可以的,我没有用过pyinstaller这个方法打包,都用的cx_freeze,自己把一些包放在一个目录我觉得还是有可能缺少一些文件的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-18 10:31:49 | 显示全部楼层
我确实成功打包了,看图,可以运行。
F[H~F]]1`LYYOHT3{$QQE3L.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-18 11:21:07 | 显示全部楼层
Charles未晞 发表于 2017-4-18 10:31
我确实成功打包了,看图,可以运行。

其实我是知道cx_freeze还有py2exe的,之所以一直用pyinstaller是因为这个可以打包得到一个单独的exe,比较简单,对于一些小的程序用这个真的挺好的,估计项目大了就有点麻烦了,我先回去试试换个版本的pyQT打包,如果不行就换cx_freeze
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-18 11:35:32 | 显示全部楼层
gopythoner 发表于 2017-4-18 11:21
其实我是知道cx_freeze还有py2exe的,之所以一直用pyinstaller是因为这个可以打包得到一个单独的exe,比 ...

可以自己写个打包的脚本。。。说实话把缺少的模块直接放在同一个目录确实不怎么靠谱,毕竟模块不是一些图片或者字体资源。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-18 12:32:39 | 显示全部楼层
日志不好用,看程序的报错,不用-F打包,然后在cmd里看出错的信息。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-12 14:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表