V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
behindeye
V2EX  ›  Python

pyqt5 打包的 exe,无法在 win11 使用

  •  
  •   behindeye · 2024-04-18 00:17:36 +08:00 · 3383 次点击
    这是一个创建于 376 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前有用 pyqt5 写一个程序,一直以来都运行的好好的,但最近,有部分用户反馈,自己的电脑突然无法打开程序了,点击 exe ,无反应,了解到他们都是最近系统有升级,才导致的。

    然后我联系了几个用户,远程他们的电脑,尝试定位问题所在,但是我无论加日志、加终端显示、加 debug 模式,还是一闪而过,日志打开能知道的事执行 window 的 show 方法就失败了,也没崩溃,终端也没错误日志,程序没有反应。一直无法定位到具体的原因,折腾了快一个月了。

    看看有没有大佬可以指教一下。怎么解决这个问题

    第 1 条附言  ·  2024-04-19 00:24:39 +08:00
    各位建言献策的大佬们,找到问题了,不能用中文命名 exe !!!,这个真的谁能想到,如我说的,win7 、win10 、win11 都行,最近 win11 的某个更新,中文命名的 exe 就启动不了了,今天突发说改成英文的试试,就解决了。wc !!!
    第 2 条附言  ·  2024-04-19 08:27:37 +08:00
    日志名称: Application
    来源: Windows Error Reporting
    日期: 2024/4/18 22:09:23
    事件 ID: 1001
    任务类别: 无
    级别: 信息
    关键字: 经典
    用户: 暂缺
    计算机: CHINAMI-5JVNMC7
    描述:
    故障存储段 1852113905678071080 ,类型 5
    事件名称: BEX64
    响应: 不可用
    Cab ID: 0

    问题签名:
    P1: 图片翻译-v0.2.6.exe
    P2: 0.0.0.0
    P3: 66212849
    P4: ucrtbase.dll
    P5: 10.0.19041.3636
    P6: 81cf5d89
    P7: 000000000007286e
    P8: c0000409
    P9: 0000000000000007
    P10:

    附加文件:
    \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER59D2.tmp.WERInternalMetadata.xml

    可在此处获取这些文件:
    \\?\C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_图片翻译-v0.2.6._78215d87b8defb94253bcbdcfaa6cb99bc5b_8d0500d2_7e82dd88-1c37-4aa9-96fa-a6a36c9e8e30

    分析符号:
    重新检查解决方案: 0
    报告 ID: dca64242-88a5-4ffc-a2e3-60f47a887a6e
    报告状态: 268435456
    哈希存储段: c98764e9979afd56e9b407c8c780b528
    Cab GUID: 0
    事件 Xml:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    <System>
    <Provider Name="Windows Error Reporting" />
    <EventID Qualifiers="0">1001</EventID>
    <Version>0</Version>
    <Level>4</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2024-04-18T14:09:23.2982796Z" />
    <EventRecordID>18048</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>Application</Channel>
    <Computer>CHINAMI-5JVNMC7</Computer>
    <Security />
    </System>
    <EventData>
    <Data>1852113905678071080</Data>
    <Data>5</Data>
    <Data>BEX64</Data>
    <Data>不可用</Data>
    <Data>0</Data>
    <Data>图片翻译-v0.2.6.exe</Data>
    <Data>0.0.0.0</Data>
    <Data>66212849</Data>
    <Data>ucrtbase.dll</Data>
    <Data>10.0.19041.3636</Data>
    <Data>81cf5d89</Data>
    <Data>000000000007286e</Data>
    <Data>c0000409</Data>
    <Data>0000000000000007</Data>
    <Data>
    </Data>
    <Data>
    \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER59D2.tmp.WERInternalMetadata.xml</Data>
    <Data>
    28 条回复    2024-05-08 17:51:26 +08:00
    Cooky
        1
    Cooky  
       2024-04-18 00:25:43 +08:00
    程序解包运行有问题?
    behindeye
        2
    behindeye  
    OP
       2024-04-18 07:53:57 +08:00 via Android
    @Cooky 不清楚呢
    xljiulong2031
        3
    xljiulong2031  
       2024-04-18 08:18:32 +08:00
    找台电脑升下级哈哈
    Mianmiss
        4
    Mianmiss  
       2024-04-18 08:49:25 +08:00
    用他们的电脑,你直接运行 py 脚本试试?
    behindeye
        5
    behindeye  
    OP
       2024-04-18 09:22:55 +08:00 via Android
    @Mianmiss 用户的电脑,也不好安装环境啥的
    uijk
        6
    uijk  
       2024-04-18 09:25:32 +08:00
    要把 python 的核心和其他依赖文件(那一堆 py 文件),一起考过去就可以。注意目录,目录不对就设置一下,就可以了。
    behindeye
        7
    behindeye  
    OP
       2024-04-18 09:32:05 +08:00 via Android
    @uijk 是这样的,用的 pyinstaller 打包,相关的 dll 以及资源都打进去了,背景是在 win7 以及 win10 ,还有早起 win11 都是正常运行的,只是最近用户电脑更新了 win11 的某个更新,就无法运行了
    ma836323493
        8
    ma836323493  
       2024-04-18 09:32:17 +08:00
    找个 win11 试下就行了
    AlexShui
        9
    AlexShui  
       2024-04-18 09:47:48 +08:00
    用终端启动程序,程序报错闪退后终端窗口还在,应该可以看到信息的
    ZnductR0MjHvjRQ3
        10
    ZnductR0MjHvjRQ3  
       2024-04-18 09:48:29 +08:00
    想请教一下 早上再用 pyqt6 然后用 Pyinstaller 打包 我的 pyqt 的代码中 icon 用了图片 然后其他代码中有大量相对路径的图片 这块一般是怎么处理的呀 是先读取图片转为 base64 导入吗还是打包的时候添加单独参数 我给 datas 那个文件夹中已经包含了我的 图片整个文件夹 似乎还是无法读取到
    behindeye
        11
    behindeye  
    OP
       2024-04-18 09:53:26 +08:00 via Android
    @ma836323493 试过了,大部分可以,少部分不行,目前反馈有问题的大概有十几二十个人
    behindeye
        12
    behindeye  
    OP
       2024-04-18 09:53:47 +08:00 via Android
    @AlexShui 终端停留了,但是没有错误信息……
    behindeye
        13
    behindeye  
    OP
       2024-04-18 09:55:57 +08:00 via Android
    @Motorola3 这个我有经验,可以加我 vx:SmileV4
    thinkershare
        15
    thinkershare  
       2024-04-18 10:40:49 +08:00
    @behindeye Windows 上,任何奔溃的程序都有会转储和奔溃日志。使用事件查看器,看看操作系统记录的奔溃错误。
    676529483
        16
    676529483  
       2024-04-18 10:42:15 +08:00
    @Motorola3 打包时候--add-data ,代码里面用 bundle_dir = getattr(sys, '_MEIPASS', path.abspath(os.path.dirname(__file__)))找到路径
    behindeye
        17
    behindeye  
    OP
       2024-04-18 10:46:40 +08:00 via Android
    @thinkershare 大佬能分享一下教程么
    thinkershare
        18
    thinkershare  
       2024-04-18 10:51:46 +08:00
    Win+R,打开运行,输入:eventvwr.msc ,回车,你就会打开 Windows 自带的程序日志查看器。除非你的程序是正常奔溃的,否则日志查看器下的:Windows 日志 > 应用程序下面肯定会有 crash 的原因。
    AlexShui
        19
    AlexShui  
       2024-04-18 12:25:55 +08:00
    @behindeye #12 那这样就该去看看代码里面 try except 是怎么处理的,是不是有哪里直接 try except pass 了
    icepie
        20
    icepie  
       2024-04-18 12:55:53 +08:00
    用 nuitka 试试看
    makejohn2015
        21
    makejohn2015  
       2024-04-18 15:40:30 +08:00
    用 virtualenv 重新弄一个环境,然后连环境一起打包到客户电脑,运行一下看看
    ktyang
        22
    ktyang  
       2024-04-18 15:43:49 +08:00
    我用 nuitka 打包 qt 在本机都打不开。。。好在我这边界面功能简单,转头直接用 tk 重新撸了个,就没再管过了。
    d20240326
        23
    d20240326  
       2024-04-18 20:33:02 +08:00
    最好的办法是不用 python ,因为 python 不知道 Windows 上还有一个 python.
    但 python 以外的编程语言/解释器知道。

    例如
    不要 python.exe 而是 myPython3.exe 之类的命名
    win10 和 11 有 python.exe

    实际上用 python 写的跨平台项目很多,建议参考他们是如何实现的。
    cnbatch
        24
    cnbatch  
       2024-04-19 02:16:38 +08:00
    中文 exe 不能运行?
    我在自己的 Win11 机器把随便下载的几个 exe 改成了中文,然后运行,可以用啊
    Windows Update 没关闭,已经自动安装最新的各种 patch
    behindeye
        25
    behindeye  
    OP
       2024-04-19 08:24:31 +08:00 via Android
    @cnbatch 是的,所以我一直没往这个方面去想,但现象确实是
    llsquaer
        26
    llsquaer  
       2024-04-19 20:51:38 +08:00
    你这么一说,发现之前打包的 pyqt 就有报告说 win11 无法运行...估计就是我是中文 py,直接打包的中文 exe
    vialon17
        27
    vialon17  
       355 天前
    的确,遇到过问题,打包的 qt exe 不能用中文,否则报错;
    安装了 400+台客户机,遇到差不多 10 多台有直接停止运行的问题,遇到这种都直接扔了,暂时没考虑,嘻嘻。
    vialon17
        28
    vialon17  
       355 天前
    @Motorola3 直接建个 icon 文件夹,在项目文件夹下,
    打完包,把这个文件夹丢里面就行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1125 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:02 · PVG 02:02 · LAX 11:02 · JFK 14:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.